作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习 Group By 和having,但我似乎无法理解这里发生了什么。我使用了 w3shools SQL Tryit 编辑器。
我创建的表是:
name age country
------------------------
Sara 17 America
David 21 America
Jared 27 America
Jane 54 Canada
Rob 32 Canada
Matthew 62 Canada
我使用的查询:
select
sum(age), country
from
NewTable
group by
country
having
age>25;
我希望查询按国家/地区对信息进行分类,并使用年龄>25 过滤器来创建结果,但以下是输出:
sum(age) country
--------------------
65 America
148 Canada
发生什么事了?!结果是美国和加拿大各年龄段人口的总和。
最佳答案
您缺少的部分特定于 having
关键字。在查询中使用having 子句将在分组之后应用于数据集。
听起来您希望在分组之前将年龄小于 25 岁的记录从查询中排除。但是,它的工作方式是having 子句排除每个组的总年龄,总年龄超过 25 岁。
如果您想在计算年龄总和之前排除个别记录,您可以执行以下操作(使用在分组之前应用的 where
子句):
select sum(age), country from NewTable where age > 25 group by country;
关于mysql - SQL 中的 Group By 和having 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812035/
我是一名优秀的程序员,十分优秀!