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

Oracle按ID分组统计动态值组数量的实现方法咨询

解决方案:按分组后的value集合统计出现次数

嘿,我来帮你搞定这个需求!你的问题可以拆成两个核心步骤:先按id把对应的value拼接成空格分隔的字符串,再统计每个拼接结果的出现次数。下面针对主流数据库给出具体实现方案,你可以根据自己使用的数据库选择对应的代码:

1. MySQL 实现

MySQL里可以用GROUP_CONCAT函数来完成字符串拼接,外层再做一次分组统计:

SELECT 
    COUNT(*) AS count,
    grouped_value AS value
FROM (
    -- 内层:按id分组,把value按顺序拼接成空格分隔的字符串
    SELECT 
        id,
        GROUP_CONCAT(value ORDER BY value SEPARATOR ' ') AS grouped_value
    FROM your_table -- 替换成你的表名
    GROUP BY id
) AS subquery
-- 外层:按拼接后的字符串分组,统计次数
GROUP BY grouped_value
ORDER BY count DESC;

注意:一定要加上ORDER BY value,这样相同的value集合(比如A+B和B+A)会被拼成一样的字符串,保证统计结果准确。

2. PostgreSQL 实现

PostgreSQL用STRING_AGG函数来做字符串聚合,逻辑和MySQL一致:

SELECT 
    COUNT(*) AS count,
    grouped_value AS value
FROM (
    SELECT 
        id,
        STRING_AGG(value, ' ' ORDER BY value) AS grouped_value
    FROM your_table
    GROUP BY id
) AS subquery
GROUP BY grouped_value
ORDER BY count DESC;

3. SQL Server 实现

版本2017及以上(支持STRING_AGG)

SELECT 
    COUNT(*) AS count,
    grouped_value AS value
FROM (
    SELECT 
        id,
        STRING_AGG(value, ' ') WITHIN GROUP (ORDER BY value) AS grouped_value
    FROM your_table
    GROUP BY id
) AS subquery
GROUP BY grouped_value
ORDER BY count DESC;

版本2016及以下(用FOR XML PATH拼接)

如果你的SQL Server版本比较旧,需要用XML拼接的方式:

SELECT 
    COUNT(*) AS count,
    grouped_value AS value
FROM (
    SELECT 
        t1.id,
        -- 用STUFF去掉开头多余的空格
        STUFF((
            SELECT ' ' + value 
            FROM your_table t2 
            WHERE t2.id = t1.id 
            ORDER BY value
            FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS grouped_value
    FROM your_table t1
    GROUP BY t1.id
) AS subquery
GROUP BY grouped_value
ORDER BY count DESC;

关键注意事项

  • 排序拼接是核心:所有方案里都对value做了排序后再拼接,这是为了避免相同的value集合因为存储顺序不同被当成不同的分组(比如id1是A、B,id2是B、A,排序后都会拼成A B,统计时会被归为同一组)。
  • 替换表名:记得把代码里的your_table换成你实际使用的表名。

内容的提问来源于stack exchange,提问作者Daniel Bonetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 16:52:38