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

如何统计food表中指定日期区间内每年的过期食品数量

你写的SQL仅完成了符合时间范围的记录筛选,没有做按年份分组聚合的操作,因此只能返回明细记录,无法得到按年统计的计数结果。

正确SQL写法(MySQL环境为例,列名含空格需用反引号包裹)

SELECT YEAR(`Expire date`), COUNT(*)
FROM food
WHERE `Expire date` BETWEEN '2010-01-01' AND '2013-12-30'
GROUP BY YEAR(`Expire date`)
ORDER BY YEAR(`Expire date`);

如果使用SQL Server,列名用方括号包裹即可:

SELECT YEAR([Expire date]), COUNT(*)
FROM food
WHERE [Expire date] BETWEEN '2010-01-01' AND '2013-12-30'
GROUP BY YEAR([Expire date])
ORDER BY YEAR([Expire date]);

逻辑说明

  • 用YEAR()函数从过期日期字段提取年份值
  • 用COUNT(*)统计每个年份对应的食品总数量
  • GROUP BY按提取的年份做分组,聚合计算每个分组的计数
  • ORDER BY保证输出结果按年份升序排列,和预期输出顺序一致

如果你的Expire date字段存储的是字符串格式而非日期格式,需要先转换为日期类型再做计算,以MySQL为例:

SELECT YEAR(STR_TO_DATE(`Expire date`, '%Y-%m-%d')), COUNT(*)
FROM food
WHERE STR_TO_DATE(`Expire date`, '%Y-%m-%d') BETWEEN '2010-01-01' AND '2013-12-30'
GROUP BY YEAR(STR_TO_DATE(`Expire date`, '%Y-%m-%d'))
ORDER BY 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:06:04