MYSQL统计月度访问量子查询结果异常问题求解
MySQL按月统计年度访问次数语句修正
问题根源
原查询的GROUP BY子句包含多余的fleet_code、date_of_visit分组字段,导致统计粒度被拆到「单月+单日+单个车队」级别,无法得到按月汇总的结果。
修正后查询语句
SELECT COUNT(DISTINCT CONCAT(date_of_visit, '|', fleet_code)) AS no_of_visits, MONTHNAME(date_of_visit) AS `Month` FROM vehicle_tyre_parameters WHERE YEAR(date_of_visit) = YEAR(CURDATE()) AND fleet_code != '' GROUP BY `Month` ORDER BY FIELD( `Month`, 'January','February','March','April','May','June', 'July','August','September','October','November','December' )
调整说明
- 移除
GROUP BY中冗余的fleet_code、date_of_visit字段,仅保留月份维度分组,实现按月汇总统计 - 简化
fleet_code过滤逻辑,删除冗余的嵌套子查询,直接在外层WHERE中过滤非空车队编码,执行效率更高 - 修正
ORDER BY中月份拼写错误(原语句误写September为Septembre),避免月份排序异常 - 适配业务统计规则:如果规则为同一天同一个车队的多条记录算作1次访问,保留现有
COUNT(DISTINCT CONCAT(date_of_visit, '|', fleet_code))写法即可;如果仅需统计当月有多少个不同的访问日期、不区分车队,将统计逻辑改回COUNT(DISTINCT date_of_visit)即可。
内容的提问来源于stack exchange,提问作者Guirguis.Botros
相关产品推荐
相关产品推荐

