描述

alt

SQL

SELECT emp_no,COUNT(emp_no) AS t FROM `salaries` GROUP BY emp_no HAVING t > 15

解题思路

1.首先尝试 COUNT 函数统计emp_no的数量,得到18条

alt

2.这是总的记录数,现在要得到 t > 15 的信息,想到 GROUP BY 将 emp_no 进行分组

alt

3.难点来了,怎么获取那个大于15的数据呢?如果不是前几天刚好看到 HAVING,我完全想不起来用 HAVING 来筛选分组后的数据

alt

...

不知道牛客怎么排的难度,hhh,我觉得这道题难度不止"简单"

工作中,我很少会用到 HAVING 函数,完全想不起来用 HAVING,刚好前几天有个业务问题,组长在写视图的时候,为了验证视图数据正确性,使用了很多开窗函数和 HAVING,他是用 HAVING 来筛选重复数据数量的,刚好,这道题不正好要做这个吗

注意点

需要刻意练习 HAVING 函数的使用,使用场景

目前已知应用场景,可以用来筛选分组后重复数据的记录条数