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

PostgreSQL中按分组计算曲目播放量占比的SQL脚本求助

PostgreSQL按分组计算播放量占比的SQL实现

需要计算每个日期下,单首曲目播放量占所属艺人当日总播放量的百分比,输出包含id、date、artist、track、percentage字段的结果集。

原始数据表

iddateartisttracklistenings
12023-01-01Ctrack_12016
22023-01-01Ctrack_23800
32023-01-01Btrack_32311
42023-01-01Atrack_44180
52023-01-01Ctrack_52013
62023-01-01Atrack_62227
72023-01-01Btrack_71006
82023-01-01Btrack_8720
92023-01-01Atrack_92438
102023-01-01Atrack_102654
112023-01-02Ctrack_13347
122023-01-02Ctrack_23100
132023-01-02Btrack_32436
142023-01-02Atrack_44821
152023-01-02Ctrack_51485
162023-01-02Atrack_63157
172023-01-02Btrack_71993
182023-01-02Btrack_82953
192023-01-02Atrack_91651
202023-01-02Atrack_101260

目标输出示例

iddateartisttrackpercentage
12023-01-01Ctrack_10.257
22023-01-01Ctrack_20.486
32023-01-01Btrack_30.572
42023-01-01Atrack_40.364
52023-01-01Ctrack_50.257
112023-01-02Ctrack_10.422

SQL脚本

SELECT
    id,
    date,
    artist,
    track,
    ROUND(listenings::NUMERIC / SUM(listenings) OVER (PARTITION BY date, artist), 3) AS percentage
FROM
    your_table_name;

脚本说明

  • 用SUM(listenings) OVER (PARTITION BY date, artist)窗口函数,直接计算每个艺人对应日期的总播放量,无需额外子查询或关联操作。
  • 将listenings转为NUMERIC类型,避免整数除法导致的精度丢失。
  • 通过ROUND()函数将结果保留三位小数,匹配目标输出的格式要求。

内容的提问来源于stack exchange,提问作者Михаил Воронин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:49:58