1. 题目
- 题目来源:SQL62 出现三次以上相同积分的情况
- 题目描述
查询积分表里面出现三次以及三次以上的积分。 - 一张表
- 所需结果
2. 题解
思路:
出现三次及以上的积分,可以对number字段
进行分区,统计出现的id
的次数即可。
HAVING 和 窗口函数都可以进行分区。
2.1 HAVING
# 方法二:HAVING
SELECT number
FROM grade
GROUP BY number
HAVING COUNT(id) >= 3
2.2 窗口函数
# 方法一:窗口函数
SELECT DISTINCT t.number # 别忘记使用 DISTINCT 去重
FROM (SELECT *,
COUNT(*) OVER(PARTITION BY number) cnt
FROM grade
) t
WHERE t.cnt >= 3