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

Oracle中如何按customer单独统计各列的数值出现次数?

Oracle 实现按客户分组统计多列数值出现次数的方法

假设你的表名为transaction_data,包含customer列以及value1、value2等需要统计的列,可通过列转行(UNPIVOT)+ 分组聚合的方式实现需求,具体方案如下:

核心思路

先通过UNPIVOT将分散在多列的数值统一转换为行数据,再按客户、原列名、数值三个维度分组,统计每个组合的出现次数。

完整示例SQL

SELECT
    customer,
    column_name,
    column_value,
    COUNT(*) AS occurrence_count
FROM
    transaction_data
UNPIVOT (
    column_value FOR column_name IN (
        value1 AS 'value1',
        value2 AS 'value2',
        -- 按需添加其他需要统计的列,格式为「列名 AS '列名'」
        value3 AS 'value3'
    )
)
GROUP BY
    customer,
    column_name,
    column_value
ORDER BY
    customer,
    column_name,
    column_value;

结果示例

执行后会得到符合需求的统计结果,比如你提到的customer 100的value1列数值1出现2次的情况,会在结果中体现为:

CUSTOMERCOLUMN_NAMECOLUMN_VALUEOCCURRENCE_COUNT
100value112
100value121
100value233
200value111

补充说明

  • 若需要统计NULL值的出现次数,需将UNPIVOT语句改为UNPIVOT INCLUDE NULLS,默认UNPIVOT会忽略NULL行。
  • 如果表中非customer列不固定,可结合Oracle动态SQL(如通过游标查询数据字典生成列列表)实现自动适配,但静态SQL在列固定的场景下更简洁可靠。

内容的提问来源于stack exchange,提问作者süleyman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:42:38