[toc]
欢迎学习 leetcode数据库习题
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
示例:
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
根据以上输入,你的查询应返回以下结果:
+---------+
| Email |
+---------+
| a@b.com |
+---------+
select Email from Person group by Email having count(Email)>1;
- 使用GROUP BY语句来将结果集中的数据行根据选择的列的值进行逻辑分组,能汇总表的子集,实现对每个组而不是对整个结果集进行整合,ASC|DESC:对结果进行升序分组和降序分组
- GROPU BY关键字通常和聚合函数一起使用,例如MAX()、MIN()、COUNT()、SUM()、AVG()等。 例如:SELECT dept_id,COUNT(*) AS total from tb group by dept_id。
- 其中,GROPU_CONCAT()函数可以将分组中的每个显示出来
- 可以使用HAVING子句过滤分组,关于HAVING和WHERE子句的异同点,自行搜索。
区别:
- where语句用于过滤数据行,having语句用于过滤分组
- where语句会在数据分组前进行过滤,而哈having语句会在数据分组后进行过滤
- where语句不可以包含聚合函数,having语句必须包含聚合函数