私は何年も前からやろうとしてきましたが、できないようです。それは次のとおりです。
列 x の値の数を選択します。ここで、columnfoo = y
集計関数内で式を使用CASE
して、条件に基づいてのみ集計できます。
SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count
FROM tbl
columnfoo =y
の場合、行をカウントに因数分解します。それ以外の場合は、カウントに追加しないでください。
これによりWHERE
、columnfooが異なるレコードも処理する場合に備えて、句内のレコードを除外する必要がなくなりますy
。
例:同時にさまざまな条件に基づいてカウントできます。
SELECT COUNT(CASE WHEN columnfoo = 'y' THEN 1 END) AS y_count,
COUNT(CASE WHEN columnfoo = 'x' THEN 1 END) AS x_count,
COUNT(CASE WHEN columnfoo = 'z' THEN 1 END) AS z_count
-- etc..
FROM tbl
これを試して:
SELECT COUNT(DISTINCT x)
FROM table
WHERE columnfoo = y
...またはより一般的には、
SELECT columnfoo, COUNT(DISTINCT x)
FROM table
GROUP BY columnfoo
SELECT x, COUNT(x) FROM TABLE_NAME WHERE columnfoo = y GROUP BY x