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

SQL查询需求:按日期取最后一行,求和type为DC的number字段

问题解决:按日期分组取最后一行并求和

原始数据表

iddatenumbertype
12022-02-021DC
22022-02-0320DC
32022-02-039DC
42022-03-042KF

需求说明

筛选type等于'DC'的数据,按date分组取每组的最后一行(以id最大作为“最后一行”的判断依据),对这些行的number列求和,预期结果为10。

解决方案

方法1:使用窗口函数(适用于MySQL 8.0+、PostgreSQL、SQL Server等)

利用ROW_NUMBER()窗口函数对每个日期分组内的数据按id降序排序,标记出每组的第一行(即最后插入的行),再求和:

SELECT SUM(number) AS total_sum
FROM (
    SELECT 
        number,
        ROW_NUMBER() OVER (PARTITION BY date ORDER BY id DESC) AS rn
    FROM your_table_name
    WHERE type = 'DC'
) t
WHERE rn = 1;

方法2:子查询关联(兼容MySQL 5.x等不支持窗口函数的数据库)

先通过子查询找出每个日期下的最大id,再关联原表获取对应的number值并求和:

SELECT SUM(t1.number) AS total_sum
FROM your_table_name t1
JOIN (
    SELECT date, MAX(id) AS max_id
    FROM your_table_name
    WHERE type = 'DC'
    GROUP BY date
) t2 ON t1.date = t2.date AND t1.id = t2.max_id
WHERE t1.type = 'DC';

两种方法执行后都会返回结果10,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:13:11