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

SQL如何按日期列分组统计列总数并展示该列去重后的值

SQL分组统计+去重拼接平台名实现方案

该需求完全可以实现,不同数据库使用对应的字符串聚合函数即可实现去重后平台名的拼接展示,你原有SQL里FROM database写法有误,需替换为实际的表名。

不同主流数据库实现代码

  • MySQL

    使用GROUP_CONCAT函数实现拼接,支持直接加DISTINCT去重:
    SELECT 
        CreatedAt,
        COUNT(PlatformName) AS `Count(PlatformName)`,
        GROUP_CONCAT(DISTINCT PlatformName ORDER BY PlatformName SEPARATOR ', ') AS `PlatformName(without duplicates)`
    FROM 替换为你的实际表名
    GROUP BY CreatedAt
    ORDER BY CreatedAt;
    
    注意:如果单天平台数量较多,需提前调整group_concat_max_len参数,避免拼接结果被截断。
  • PostgreSQL

    使用STRING_AGG函数实现:
    SELECT 
        CreatedAt,
        COUNT(PlatformName) AS "Count(PlatformName)",
        STRING_AGG(DISTINCT PlatformName, ', ' ORDER BY PlatformName) AS "PlatformName(without duplicates)"
    FROM 替换为你的实际表名
    GROUP BY CreatedAt
    ORDER BY CreatedAt;
    
  • SQL Server(2017及以上版本)

    使用STRING_AGG函数,搭配WITHIN GROUP指定排序规则:
    SELECT 
        CreatedAt,
        COUNT(PlatformName) AS [Count(PlatformName)],
        STRING_AGG(DISTINCT PlatformName, ', ') WITHIN GROUP (ORDER BY PlatformName) AS [PlatformName(without duplicates)]
    FROM 替换为你的实际表名
    GROUP BY CreatedAt
    ORDER BY CreatedAt;
    
  • Oracle(19c及以上版本)

    使用LISTAGG函数实现:
    SELECT 
        CreatedAt,
        COUNT(PlatformName) AS "Count(PlatformName)",
        LISTAGG(DISTINCT PlatformName, ', ') WITHIN GROUP (ORDER BY PlatformName) AS "PlatformName(without duplicates)"
    FROM 替换为你的实际表名
    GROUP BY CreatedAt
    ORDER BY CreatedAt;
    

补充说明

如果你需要统计的是单天去重后的平台数量,把COUNT(PlatformName)替换为COUNT(DISTINCT PlatformName)即可。

内容的提问来源于stack exchange,提问作者tadeo soresi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:48:02