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

如何在Oracle SQL中统计Dept+Employee+TransactionDate的重复次数

单条SQL实现需求的方案

完全可以通过单条SQL查询实现这个需求,下面提供两种常用思路:

方法一:使用窗口函数(推荐)

这是最简洁高效的写法,利用窗口函数直接在原记录上附加分组统计数:

SELECT 
    Dept,
    Employee,
    TransactionDate,
    Event,
    COUNT(*) OVER (PARTITION BY Dept, Employee, TransactionDate) AS count
FROM transaction;

逻辑说明:

  • PARTITION BY Dept, Employee, TransactionDate 会将数据按这三个字段的组合分组
  • COUNT(*) OVER (...) 计算每个分组内的总记录数,并将该数值赋值给分组内的每一条记录,完全匹配你需要的结果格式。

方法二:子查询关联(兼容老版本SQL)

如果你的数据库不支持窗口函数,可以用子查询先统计分组总数,再关联原表:

SELECT 
    t.Dept,
    t.Employee,
    t.TransactionDate,
    t.Event,
    g.group_count AS count
FROM transaction t
INNER JOIN (
    SELECT 
        Dept,
        Employee,
        TransactionDate,
        COUNT(*) AS group_count
    FROM transaction
    GROUP BY Dept, Employee, TransactionDate
) g 
    ON t.Dept = g.Dept 
    AND t.Employee = g.Employee 
    AND t.TransactionDate = g.TransactionDate;

逻辑说明:

  1. 子查询先按Dept+Employee+TransactionDate分组,统计每个组合的总条数
  2. 通过INNER JOIN将原表的每条记录与对应分组的统计数关联,得到最终结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:50:26