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

SQL Group by聚合时获取int列结果及最新日期对应文本值

SQL查询解决方案

问题修正说明

你现有查询存在两处问题:

  1. 要得到col3的分组累加值,应该用SUM(col3)而非MAX(col3)
  2. MAX(col4)会按字符串排序取最大值,无法关联到最新日期对应的值

方案1:窗口函数法(适配MySQL 8.0+、PostgreSQL、SQL Server等现代数据库)

用窗口函数标记每个分组内日期最新的行,再关联聚合结果即可:

WITH group_agg AS (
    -- 先计算每个col1分组的col3总和
    SELECT col1, SUM(col3) AS sum_col3
    FROM Table1
    GROUP BY col1
),
row_rank AS (
    -- 每个col1分组内按col2倒序排序,最新日期的行排名为1
    SELECT 
        col1,
        col2 AS latest_col2,
        col4,
        ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2 DESC) AS rn
    FROM Table1
)
SELECT 
    g.col1,
    r.latest_col2,
    g.sum_col3 AS col3,
    r.col4
FROM group_agg g
INNER JOIN row_rank r ON g.col1 = r.col1
WHERE r.rn = 1;

方案2:子查询关联法(兼容低版本MySQL等不支持CTE的数据库)

先取每个分组的最大日期,再关联原表匹配对应col4,同时完成分组聚合:

SELECT 
    t1.col1,
    t2.max_col2,
    SUM(t1.col3) AS col3,
    MAX(CASE WHEN t1.col2 = t2.max_col2 THEN t1.col4 ELSE NULL END) AS col4
FROM Table1 t1
INNER JOIN (
    SELECT col1, MAX(col2) AS max_col2
    FROM Table1
    GROUP BY col1
) t2 ON t1.col1 = t2.col1
GROUP BY t1.col1, t2.max_col2;

以上两种方案均可得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:42:00