You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL多列分区查询返回重复结果,求助实现年度Genre数量统计

解决Genre按年份统计重复行问题

问题根源

你用COUNT() OVER (PARTITION BY Genre, Release_Year)窗口函数时,它会给拆分后的每一行都计算对应分组的数量,但不会自动合并重复结果。拆分后的表中,同一个Genre+Release_Year组合有多少条记录,结果就会返回多少条带相同统计值的行,所以才会出现大量重复。

两种解决办法

方法1:用GROUP BY(推荐)

这是统计分组数量的标准写法,直接按Genre和Release_Year分组聚合,结果自然每个组合只出一行:

SELECT Genre, Release_Year, COUNT(*) AS Num_genre
FROM Movies
GROUP BY Genre, Release_Year
ORDER BY Release_Year, Num_genre DESC;

COUNT(*)用来数每个分组里的记录数,GROUP BY确保每个Genre+年份的组合仅返回一条统计行。

方法2:保留窗口函数加DISTINCT

如果一定要用窗口函数,可以在外层加DISTINCT过滤重复行:

SELECT DISTINCT Genre, Release_Year, COUNT(Genre) OVER (PARTITION BY Genre, Release_Year) AS Num_genre
FROM Movies
ORDER BY Release_Year, Num_genre DESC;

不过这种写法效率不如GROUP BY,因为窗口函数会先给所有行计算统计值,再去重,只适合特定场景用。

内容的提问来源于stack exchange,提问作者Jona Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:13:21