单SQL查询实现不同车辆类型的机油总量统计求助
单SQL查询实现不同车辆类型的机油总量统计求助
嘿,我来帮你搞定这个问题!你想要在同一个查询里,统计出指定日期(01-10-2023)、指定用户(gift)下,**汽车(car)和摩托车(motorcycle)**各自的机油总量对吧?你之前写的SQL没有区分车型做针对性统计,所以没法得到你想要的分车型结果。
这里给你两种可行的方案,按需选择:
方案一:条件聚合(一行展示结果,匹配你要的输出格式)
这种方法用CASE WHEN配合SUM(),直接在一行里输出两种车型的总量:
SELECT SUM(CASE WHEN vehicalType = 'car' THEN total ELSE 0 END) AS car_total, SUM(CASE WHEN vehicalType = 'motorcycle' THEN total ELSE 0 END) AS motorcycle_total, fullname, FDate FROM paking_histories WHERE FDate = '01-10-2023' AND oiltype = 'oil' AND Fullname = 'gift' GROUP BY fullname, FDate;
说明:
CASE WHEN会判断每条记录的vehicalType,只对符合条件的车型累加total值,不符合的则加0- 最后按
fullname和FDate分组,确保结果严格对应指定的用户和日期
方案二:分组统计(多行展示结果,更灵活)
如果你能接受每行对应一种车型的结果,也可以用GROUP BY分组:
SELECT vehicalType, SUM(total) AS total, fullname, FDate FROM paking_histories WHERE FDate = '01-10-2023' AND oiltype = 'oil' AND Fullname = 'gift' AND vehicalType IN ('car', 'motorcycle') -- 只筛选需要的车型,避免无关数据 GROUP BY vehicalType, fullname, FDate;
说明:
- 先过滤出目标车型,再按
vehicalType分组统计,结果会是两行:一行对应car的总量,一行对应motorcycle的总量
另外提个小细节:你的表名写的是paking_histories,是不是拼写错误?应该是parking_histories吧?如果是的话记得修正表名哦。
备注:内容来源于stack exchange,提问作者Ammar
相关产品推荐
相关产品推荐

