2015.12.10

ウィンドウ関数が使えるバージョン

OLAPウィンドウ関数が使えるといろいろ便利。
SELECT
ROW_NUMBER() OVAER (ORDER BY hogehoge ), fuga
FROM honyarara;

こんな感じで行数をセットできるしね。
ただ、データウェアハウスを想定した世界なので、ちょっと古いバージョンでは利用できない。

PostgreSQL: V8.4~
Informx : V11.7~
SQL Sever: V2008~
Oracle: v8.1.6~

Informix11.5でrow_number()を使ってみたらシンタックスエラーとして怒られてしまたたですよ orz
バージョンごとの機能差異は時々注意ですな。

| | コメント (0) | トラックバック (0)

2015.02.24

行値式を使おう

行値構成子(row value constructor)と書くと難しげであるが、使いどころによっては便利な機能である。
先日あるシステムで

SELECT ..... FROM hoge WHERE col1 || col2 = "hoge" || hoge2;

みたいなのがあって、こりゃいかんな、と。

続きを読む "行値式を使おう"

| | コメント (0) | トラックバック (0)

2015.02.18

宗教論争になりやすいテーマ

この業界界隈でも当然のことながら、熱いファンなどの存在によりいくつかの技術に対する「優劣論」は盛り上がりやすい。
ただ一方でこうした所信の披瀝は正論vs正論から時として精神論vs精神論になり、水掛け論に終始することもある。

データベース系でこうした論争になりそうなテーマをちょこっと列挙してみたいと思う。

続きを読む "宗教論争になりやすいテーマ"

| | コメント (0) | トラックバック (0)

2015.02.16

小技:行に連番を付与する

検索結果に対して、連番を振りたい、というニーズはそこそこある。
最近のRDBMSではこれがかなり簡単に実現できる。
row_number()関数である。

続きを読む "小技:行に連番を付与する"

| | コメント (0) | トラックバック (0)

2014.08.27

MySQLにおけるNVL関数の代替手段

いや、実はこれってすでに調べてあるし記録してあるんだけどね。
ref)PostgreSQLにおけるNVL関数の代替手段
こちらと内容重複ありますが、ご容赦。

続きを読む "MySQLにおけるNVL関数の代替手段"

| | コメント (0) | トラックバック (0)

2014.05.29

特定のインデックスを強制利用

基本的にはこの技はワークアラウンド以外では禁忌だと思ってる。
データの状況というのは日々刻々変わっていくわけであり、最適なインデックスがどれであるのか、というのはある日突然変わってしまうかもしれない。
その意味でオプティマイザに委ねることを基本方針として、オプティマイザが賢い振る舞いをするように設定をしてあげるのが為すべき道だと思う。

続きを読む "特定のインデックスを強制利用"

| | コメント (1) | トラックバック (0)

2014.05.26

COALESCE関数

最近うちのブログのPV順位に変動が見られた。
[PostgreSQLにおけるNVL関数の代替手段]が2位につけている。
[PostgreSQLでDecode?]も、結構上位に来ているんで、かなりの人がOracleからPostgreSQLへの移行に悩んでる、ということだろうか(^^;

続きを読む "COALESCE関数"

| | コメント (0) | トラックバック (0)

2014.03.02

【メモ】集約関数の結果等の型指定

SQLを使用したときの出力結果が思い通りの型にならない場合の対処法

SELECT sum(sales_amount)::integer FROM sales;

"::(ダブルコロン)"をSELECTした項目につけることで出力される型を制御できる。
単純にSUMした場合、元のカラムが整数型でも出力結果が浮動小数点になってしまうことがたまにある。
上記はこれへの対応例である。

続きを読む "【メモ】集約関数の結果等の型指定"

| | コメント (0) | トラックバック (0)

2014.03.01

PostgreSQLにおけるNVL関数の代替手段

NVL関数というものを持っているDBMSがいくつかある。
例えばOracle、例えばInformix。
しかしPostgreSQLにはNVL関数がない。そこで代わりに登場するのがCOALESCE関数である。

続きを読む "PostgreSQLにおけるNVL関数の代替手段"

| | コメント (0) | トラックバック (0)