ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

COUNTとCASE式

2010-01-27 23:59:08 | PG(RDBMS)

あるテーブルからちょっとずつ条件を変えて何種類かの件数をカウントしたい場合、集計関数COUNTを使ったSQLのWHERE条件を変えて何回も実行することになる。
しかしテーブルの件数が多くて、条件からしてフルスキャンになるような場合では、1つのSQLにまとめて1回だけで出来ないものかと思う。
で色々考えた結果、SUM(DECODE(~,1,0))を参考にして、COUNTで指定する式にCASE式を使う方法を思い付いた!
(思い付いたも何も、知ってる人から見れば今さら何をって感じだけど(苦笑))

COUNT(*)以外の使い方の場合、COUNT()には定数値や項目名を指定するようなイメージがあったけど、実際はSQL式なら何でもいい。
CASE式はWHERE句と同じように条件が指定できるので、とても便利だ^^

あと、昔自分で書いたCOUNTの実行結果の例を見ていて、検証の間違いを発見(汗)
NULLと四則演算をした場合の結果はNULLになるので、NULLと文字列結合をしたらNULLになると思い込んでいたが、そうではなく、元の文字列がそのまま返ってた。
実行結果自体がそうなってるのに、なんでそんな勘違いをしていたんだろう…(恥)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする