7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

SQLでCOUNTIF

Posted at

ExcelのCOUNTIF関数は、条件に一致する件数をカウントする便利関数。

=COUNTIF(A1:A3, "Apple")

みたいなの。
これをSQLでやる場合、SUMとCASEを組み合わせてやる。
CASE使って、条件に一致する場合1、しない場合0としてやってその合計をSUMで出す。

COLA
Apple
Orange
Apple

例えば上の表TBLAからCOLA=Appleの件数を抽出する場合、下記で出す。

SELECT
SUM(CASE WHEN COLA='Apple' THEN 1 ELSE 0 END) AS CNT
FROM TBLA;

CNT
2

・・・
ツッコんだ人も多いと思うけど、この要件ならこんなことしなくてもWHEREで条件入れてCOUNTとれば事足りる。

SELECT COUNT(*) AS CNT FROM TBLA WHERE COLA='Apple';

わざわざSUMとCASE使うメリットはWHEREを使わないということぐらい。
なので、異なる条件の件数を同時に取得したい、って場合に使える。
例えば全件数とCOLA=Appleの件数を1回のSQLで同時に取得したい場合、

SELECT
COUNT(*) AS ALL_CNT
,SUM(CASE WHEN COLA='Apple' THEN 1 ELSE 0 END) AS APPLE_CNT
FROM TBLA;

ALL_CNT APPLE_CNT
3 2

わりとSUMとCASEを組み合わせることで、1回のSQLで色々取得することが出来るようになるので便利。

※ DB2 10で確認しました

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?