如何编写SQL查询以计算表的num列中特定num值的总数。
例如,选择num = 1
结果:2
+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM | 1 |
+-----+-----+
| BOB | 1 |
+-----+-----+
| JAKE | 2 |
+-----+-----+
| JOHN | 4 |
+-----+-----+
如何编写SQL查询以计算表的num列中特定num值的总数。
例如,选择num = 1
结果:2
+-----+-----+
| NAME | NUM |
+=====+=====+
| SAM | 1 |
+-----+-----+
| BOB | 1 |
+-----+-----+
| JAKE | 2 |
+-----+-----+
| JOHN | 4 |
+-----+-----+
Answers:
SELECT
COUNT(NUM) as 'result'
FROM
Table1
GROUP BY
NUM
HAVING NUM = 1
having num = 1
等同于where num =
,所以它没有错,也不是“没有道理”。我认为以这种方式而不是更常规的方式来进行更新是令人耳目一新的where
。乍一看,等效性并不明显,所以我鼓励您自己尝试一下。
where
一样,为什么要使用having
?
having
用于组级别的标准;where
适用于行级条件。它们通常不能互换。但是,在这种特殊的边界情况下,它们可以互换。因此输出是相同的。但是,从哲学上讲,我认为NUM
这是组级别的标准,因为group by是在NUM
其自身上完成的。因此我赞赏having
而不是where
。您可能不会喜欢我的抽象关注而支持其他关注,而只是解释一下,这样您就不会觉得我完全疯了。
试试这个查询
select NUM, count(1) as count
from tbl
where num = 1
group by NUM
--having count(1) (You condition)
SELECT sum(num) WHERE num = 1;
count
吗
1.
如果OP想要怎么办where num=2
。2
此外,此查询将返回error
,因为它未指定tablename
。