私はこのようなテーブルがあります。同じクエリで2つの異なるものを数えることはできますか?
// question_and_answers
+----+---------+---------------+--------+------+
| id | title | body | amount | type |
+----+---------+---------------+--------+------+
| 1 | t1 | b1 | NULL | 0 |
| 2 | t2 | b2 | NULL | 1 |
| 3 | t3 | b3 | NULL | 1 |
| 4 | t4 | b4 | 100 | 0 |
| 5 | t5 | b5 | NULL | 0 |
| 6 | t6 | b6 | NULL | 1 |
| 7 | t7 | b7 | 50 | 0 |
+----+---------+---------------+--------+------+
をそして、私は2つのクエリがあります。
1:質問の数:
SELECT count(1) FROM question_and_answers WHERE type = 0
2:支払った質問の数:
をSELECT count(1) FROM question_and_answers WHERE type = 0 AND amount IS NOT NULL
これらの2つのクエリを組み合わせることはできますか?私はそれらの代わりに1つのクエリを書くことができますか?
ありがとう、upvote。ちょうど 'sum()'の理由なぜカウントしないのですか?私はちょうど何かを集計するのではなく、行の数を数えたいからです。 –
条件 'where type = 0'を追加します。結果を変更することはありませんが、パフォーマンスを向上させることができます。 –
count()も同様に使用できますが、countは何であるかに関わらずnull以外の値をすべてカウントします。したがって、 'sum(type = 0の場合は1 else else end)' –