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
本文解析了如何使用HAVING和窗口函数解决SQL问题,目标是找出积分表中积分值出现三次及以上的情况。通过GROUP BY和COUNT聚合,以及DISTINCT操作来实现数据筛选。

被折叠的 条评论
为什么被折叠?



