Skip to content

Latest commit

 

History

History
47 lines (36 loc) · 1.4 KB

182. 查找重复的电子邮箱(简单).md

File metadata and controls

47 lines (36 loc) · 1.4 KB

[toc]

1 原题目

编写一个 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子句过滤分组,关于HAVINGWHERE子句的异同点,自行搜索。

区别:

  • where语句用于过滤数据行,having语句用于过滤分组
  • where语句会在数据分组前进行过滤,而哈having语句会在数据分组后进行过滤
  • where语句不可以包含聚合函数,having语句必须包含聚合函数