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

SQL中使用DISTINCT无法去除重复数据的问题求助

问题原因

DISTINCT是对整行字段组合去重,你同时查询了artist和streams,只要这两个字段的组合不重复,就会被保留。BTS的几条记录streams值不同,所以整行是唯一的,自然不会被过滤掉。

解决方案

如果你想每个artist只出现一次,同时获取对应的播放量数据,可以用以下两种方式:

方式1:取每个艺人的最高播放量

用GROUP BY按艺人分组,搭配聚合函数MAX()获取每组的最高播放量,再排序取前5:

SELECT artist, MAX(streams) AS max_streams
FROM spotify_daily_charts
GROUP BY artist
ORDER BY max_streams DESC
FETCH FIRST 5 ROWS ONLY;

方式2:用窗口函数指定保留每条艺人的某条记录

如果需要更灵活的筛选逻辑(比如保留艺人播放量最高的那条完整记录),可以用ROW_NUMBER()窗口函数:

SELECT artist, streams
FROM (
    SELECT 
        artist, 
        streams,
        -- 按艺人分组,每组内按播放量降序排序,给每条记录标记序号
        ROW_NUMBER() OVER (PARTITION BY artist ORDER BY streams DESC) AS rn
    FROM spotify_daily_charts
) t
-- 只保留每组的第一条(播放量最高的那条)
WHERE rn = 1
ORDER BY streams DESC
FETCH FIRST 5 ROWS ONLY;

内容的提问来源于stack exchange,提问作者Melb Jhay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:25:25