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

SQL中GROUP BY分组后使用SUM()统计1996年订单总数方法

问题背景

我有一张名为sumTable的数据表,表结构及样例数据如下:

yearOrders
1996-07-04 00:00:00.0002
1996-10-15 00:00:00.0003
1997-10-08 00:00:00.0001
1996-10-03 00:00:00.0005
1994-11-05 00:00:00.0001
1996-07-04 00:00:00.0002
1999-10-15 00:00:00.0003
1996-10-08 00:00:00.0001
1995-10-03 00:00:00.0005
1996-11-05 00:00:00.0001

需求为统计1996年的订单总数量,结果以单列形式展示,预期输出如下:

Expected Output 
Total Orders
14

原有尝试的SQL语句如下,执行后无法得到正确结果:

select datepart(yy, '1996'), sum(orders) AS 'Total_Orders' from SumTable group by orders
原有语句错误点
  • 日期取值错误:datepart(yy, '1996')是对固定字符串'1996'做年份提取,没有读取表中存储日期的year字段,无法识别哪些记录属于1996年
  • 分组逻辑错误:group by orders会按订单数的值拆分分组,无法对全年所有符合条件的记录做全局汇总
  • 缺少过滤条件:没有限定只统计1996年的记录,会混入其他年份的订单数据
  • 列名不匹配:别名设置为Total_Orders,和预期要求的Total Orders不一致
正确SQL写法

根据使用的数据库类型选择对应语句即可:

SQL Server 版本(匹配原语句用的DATEPART语法)

SELECT SUM(orders) AS [Total Orders]
FROM sumTable
WHERE DATEPART(yy, year) = 1996;

MySQL 版本

SELECT SUM(orders) AS `Total Orders`
FROM sumTable
WHERE YEAR(year) = 1996;

语句逻辑说明:

  1. 直接通过WHERE条件筛选出year字段日期值属于1996年的所有记录
  2. 因为是对所有符合条件的记录做全局汇总,不需要加GROUP BY分组,直接用SUM()聚合函数计算订单总数即可
  3. 计算1996年对应订单值总和:2+3+5+2+1+1=14,完全匹配预期输出结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:49:12