【问题标题】:SQL - Using COUNT() as a WHERE conditionSQL - 使用 COUNT() 作为 WHERE 条件
【发布时间】:2017-10-04 08:21:49
【问题描述】:

我正在尝试选择多次满足某个条件的行以及满足该条件的次数。

例如,对于表格:

Animal    ID    NumKids      PostCode
Cow       1202  5            1405
Cow       3492  6            4392
Chicken   4535  1            2394
Alpaca    2432  0            3453
Cow       2432  3            6253
Chicken   2342  5            4444

选择至少生过 4 个以上孩子的每一种动物,以及这种情况发生的次数。

示例输出:

Animal   Count
Cow      2

我已经尝试了一些类似的东西:

SELECT  animal
FROM Table
WHERE NumKids>4 AND COUNT((NumKids>4)>2);

但是这里的输出(只输出动物名称而不是计数)和使用 COUNT() 作为条件存在明显错误。

【问题讨论】:

  • 使用HAVINGGROUP BY

标签: sql count


【解决方案1】:

您不能在 WHERE 子句中直接使用聚合 (COUNT((NumKids>4)>2)),这就是 HAVING 子句的用途。

试试下面的查询

select 
  Animal, COUNT(*) AS Count
from Table
where NumKids > 4
group by Animal
having COUNT(*) >= 2

【讨论】:

  • 既然OP要求at least two times,不应该是HAVING COUNT(*) >=2吗?
猜你喜欢
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多