group by
先来看一个例子,理解一下group by 的用法 和 功能
例如这张表
然后执行
select Email, count(Email) as num
from Person
group by Email;
效果如下
如果接下来 你还不能理解
执行sql
SELECT name FROM test GROUP BY name
构建一个虚拟表
group by 多个字段该怎么理解呢:如group by name,number,我们可以把name和number 看成一个整体字段,以他们整体来进行分组
如执行
select name,sum(id) from test group by name,number
效果如图
注意 :
- group by 子句中的分组依据列必须是表中存在的列名 ,不能使用 as 子句指派的列别名。
- 带有 group by 子句的select 语句的查询列表中只能出现分组依据列,因为,因为分组后的每个组只返回一行数据。
having
- having 子句 用于对分组后的结果再进行筛选 ,它的功能有点儿像where 子句,但是它是专门用于组 而不是记录。
- 在having 子句中可以使用统计函数,而在where 子句中不能。
- having 子句通常跟group by 子句一起使用
附力扣原题,以助理解
select Email
from Person
group by Email
having count(Email) > 1;