私はあなたが望むようにあなたのクエリを書き直しました:
SELECT count(*) AS ct
FROM sample_cov
WHERE target = 542
AND percent_cov < 10;
count()
0
一致する行 (または列に null 以外の値) が見つからない場合に返されます。の必要はありませんcoalesce()
。これに関するマニュアルを引用します:
count を除いて、行が選択されていない場合、これらの関数は null 値を返すことに注意してください。
鉱山を強調します。count()
で戻ってきたときに別の値を返したい場合は、ステートメント0
を使用します。CASE
また、count(percent_cov)
持っているうちに書いても無駄ですWHERE percent_cov < 10
。この場合、null 以外の値のみが適格でcount(*)
あり、同じ結果がわずかに速く簡単に得られます。
何もグループ化しないため、句は必要ありませGROUP BY
ん。テーブル全体を集計しています。でき
ますが、これは別のクエリになります。 GROUP BY target
SELECT target, count(*)
FROM sample_cov
GROUP BY target
WHERE percent_cov < 10;
HAVING
句の式をもう一度綴る必要があります。出力列名は と でのみ表示されORDER BY
、またはでは表示されGROUP BY
ません。WHERE
HAVING