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

如何实现数据表最后一行数据的查询?

实现方法

根据你提供的表结构和期望结果,这是典型的分组聚合+合计行需求,以下是两种常用的SQL实现方案:

方案一:使用WITH ROLLUP自动生成合计行(适用于MySQL、PostgreSQL等支持该语法的数据库)

假设你的数据表名为finance_table,字段为date(日期)、dept(部门)、income(收入)、expense(支出),执行以下SQL:

SELECT 
    CASE WHEN GROUPING(dept) = 1 THEN '合计' ELSE dept END AS 部门,
    SUM(income) AS 总收入,
    SUM(expense) AS 总支出,
    SUM(income) - SUM(expense) AS 余额
FROM finance_table
GROUP BY dept WITH ROLLUP;
  • GROUP BY dept WITH ROLLUP会在分组统计基础上,自动添加一行全部门的合计数据
  • GROUPING(dept)用于判断当前行是否是ROLLUP生成的合计行,返回1时将部门名称替换为'合计'

方案二:使用UNION ALL手动合并分组统计与合计(通用所有SQL数据库)

如果你的数据库不支持WITH ROLLUP,可以用这种方式:

-- 统计各部门收支数据
SELECT 
    dept AS 部门,
    SUM(income) AS 总收入,
    SUM(expense) AS 总支出,
    SUM(income) - SUM(expense) AS 余额
FROM finance_table
GROUP BY dept

UNION ALL

-- 统计全部门合计数据
SELECT 
    '合计' AS 部门,
    SUM(income) AS 总收入,
    SUM(expense) AS 总支出,
    SUM(income) - SUM(expense) AS 余额
FROM finance_table

-- 排序让合计行显示在最后
ORDER BY 
    CASE WHEN 部门 = '合计' THEN 1 ELSE 0 END,
    部门;
  • 先通过GROUP BY dept得到各部门汇总数据,再单独统计全表合计数据,最后用UNION ALL合并结果
  • 排序逻辑确保'合计'行在所有部门数据之后

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:57:17