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

MySQL按日分组查询异常:期望2023.04.18-22数据却返回更早数据

问题分析与修正方案

原SQL的错误点

  • 分组逻辑不严谨:GROUP BY DAY(AEG)仅提取日期中的“日”部分分组,会把不同月份、年份的同一天数据(比如2023-04-18和2023-05-18)合并到同一组。同时SELECT子句直接返回AEG属于非标准SQL写法,MySQL宽松模式下会随机返回每组内的某一条AEG值,导致分组结果的日期逻辑混乱。
  • 缺少日期范围过滤:语句未限定查询时间范围,数据库会遍历全表数据分组后取倒序前5条,自然无法精准获取你需要的2023-04-18至2023-04-22的数据。
  • 排序逻辑失效:由于AEG未经过聚合处理,ORDER BY AEG DESC是对每组内的单个AEG值排序,而非按分组后的完整日期排序,导致取到的前5组并非最新的日期分组。

修正后的SQL语句

SELECT 
    DATE(AEG) AS stat_date,
    MAX(KWHI2) - MIN(KWHI2) AS PV
FROM LOGPV 
WHERE AEG BETWEEN '2023-04-18 00:00:00' AND '2023-04-22 23:59:59'
GROUP BY DATE(AEG)
ORDER BY stat_date DESC;

修正说明

  1. 用DATE(AEG)将datetime类型的AEG转换为纯日期格式,确保分组和查询结果对应完整的一天,且符合SQL规范(SELECT与GROUP BY字段一致)。
  2. 添加WHERE条件通过BETWEEN限定目标日期范围,精准筛选2023-04-18至2023-04-22的数据。
  3. 基于格式化后的stat_date排序,保证结果按日期倒序排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:10:02