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

SQL分组带HAVING条件查询:计算符合条件的条目总数量与value字段总和

SQL查询实现方案

注意事项

你原有SQL中的结束日期存在格式错误,2021-31-08需修正为2021-08-31避免查询报错,以下方案默认按筛选8月整月数据编写,你可以根据实际需求调整时间范围。


需求1:计算summe字段总和(返回结果4)

将你现有查询作为子查询,外层直接对summe列求和即可:

SELECT SUM(summe) AS total_count
FROM (
    SELECT adrnr, COUNT(adrnr) as summe 
    FROM tablename 
    WHERE datum >= '2021-08-01 00:00:00.000' 
      AND datum <= '2021-08-31 23:59:59.999' 
    GROUP BY adrnr 
    HAVING COUNT(adrnr) > 1
) AS t;

需求2:统计符合条件的条目value总和(返回结果82.12)

写法1:子查询匹配符合条件的adrnr

SELECT SUM(value) AS total_value
FROM tablename
WHERE datum >= '2021-08-01 00:00:00.000' 
  AND datum <= '2021-08-31 23:59:59.999'
  AND adrnr IN (
    SELECT adrnr
    FROM tablename 
    WHERE datum >= '2021-08-01 00:00:00.000' 
      AND datum <= '2021-08-31 23:59:59.999' 
    GROUP BY adrnr 
    HAVING COUNT(adrnr) > 1
);

写法2:窗口函数实现(无需重复写过滤条件,性能更优)

SELECT SUM(value) AS total_value
FROM (
    SELECT 
        value,
        COUNT(*) OVER (PARTITION BY adrnr) AS adrnr_count
    FROM tablename
    WHERE datum >= '2021-08-01 00:00:00.000' 
      AND datum <= '2021-08-31 23:59:59.999'
) AS t
WHERE adrnr_count > 1;

同时返回两个结果的实现

如果需要一次查询同时拿到总条目数和value总和,可以用如下写法:

SELECT 
    SUM(summe) AS total_count,
    SUM(total_value_per_adrnr) AS total_value
FROM (
    SELECT 
        adrnr,
        COUNT(adrnr) as summe,
        SUM(value) as total_value_per_adrnr
    FROM tablename 
    WHERE datum >= '2021-08-01 00:00:00.000' 
      AND datum <= '2021-08-31 23:59:59.999' 
    GROUP BY adrnr 
    HAVING COUNT(adrnr) > 1
) AS t;

内容的提问来源于stack exchange,提问作者Jens Körte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:45:00