表结构如下
同一个车辆型号会有多辆车(车牌号不同),车辆每检测一次,都增加一条记录,但是检测次数会增加。
现在需要查询【每个月不同车辆型号的第一次检测不合格车辆的数量,要求输出车辆型号、生产企业、初检不合格数量(辆)】如下图:
这个要求目前我用代码能够实现,但用SQL实现我不是很清楚,不知道SQL语句怎么写,请教一下大家
select 生产奇异,车辆型号,sum(车牌号) from table where 检测次数=1 group by 1,2
SELECT
t2.check_mon,
t2.车辆型号,
t2.生产企业,
COUNT(t2.车辆型号)
FROM
(
SELECT
t.车辆型号,
t.生产企业,
DATE_FORMAT(t.检测日期, '%Y.%m') check_mon
FROM
表名 t
WHERE
t.res = '不合格'
GROUP BY
t.车辆型号,
t.车牌号,
check_mon
) t2
GROUP BY
t2.车辆型号,
t2.check_mon
SELECT COUNT(检测结果),车辆型号,生产企业 FROM TABLE GROUP BY 车辆型号,生产企业
再补充说明一下问题,假如表内部分数据如下
现在希望查询结果如下
现在不太清楚如何用SQL实现,希望大家能教一教,实在是没有积分了,所以没有悬赏
select 车辆型号, 生产企业, count(decode(检测结果,'合格',0,'不合格',1,0)) from table where 检测次数=1 and 检测月份>=:月份第一天 and 检测月份<=:月份最后一天 group by 车辆型号, 生产企业
select 车辆型号, 生产企业, count(*) from table where 检测结果='不合格'and 检测次数=1 and 检测月份>=月初日期 and 检测月份<=月末日期 group by 车辆型号, 生产企业
SELECT 车辆型号,生产企业,SUM(IF(检测结果='不合格',1,0))
FROM TABLE
WHERE 1
GROUP BY 车辆型号,生产企业