在SQL中使用where条件对两个聚合查询进行除法?
尝试搜索解决方案,但未找到该解决方案 我需要比较每种车型的缺陷数量和某一类型的缺陷数量,并将其与每种车型的总缺陷数量进行比较,得出缺陷的百分比,例如在SQL中使用where条件对两个聚合查询进行除法?,sql,sql-server,Sql,Sql Server,尝试搜索解决方案,但未找到该解决方案 我需要比较每种车型的缺陷数量和某一类型的缺陷数量,并将其与每种车型的总缺陷数量进行比较,得出缺陷的百分比,例如 select car,count(distinct model) where defect_code=123 group by car select car,count(distinct model) group by car 我将如何编写此查询?最好采用优化的方法 尝试使用Join SELECT car, Df_cnt /
select car,count(distinct model)
where defect_code=123
group by car
select car,count(distinct model) group by car
我将如何编写此查询?最好采用优化的方法 尝试使用Join
SELECT car,
Df_cnt / T_cnt
FROM (SELECT car,
Count(DISTINCT model) Df_cnt From tablename
WHERE defect_code = 123
GROUP BY car) A
JOIN (SELECT car,
Count(DISTINCT model) T_cnt from tablename
GROUP BY car) b
ON A.car = b.car
下面是示例代码
SELECT * INTO #TEMP
FROM
(
SELECT 'MARUTI' CAR,'SWIFT' MODEL,123 DEFECT_CODE
UNION ALL
SELECT 'MARUTI' CAR,'ALTO' MODEL,123 DEFECT_CODE
UNION ALL
SELECT 'HYUNDAI' CAR,'ACCENT' MODEL,123 DEFECT_CODE
UNION ALL
SELECT 'NISSAN' CAR,'DATSON' MODEL,123 DEFECT_CODE
UNION ALL
SELECT 'HONDA' CAR,'CITY' MODEL,123 DEFECT_CODE
UNION ALL
SELECT 'HYUNDAI' CAR,'ACCENT' MODEL,115 DEFECT_CODE
UNION ALL
SELECT 'NISSAN' CAR,'DATSON' MODEL,117 DEFECT_CODE
UNION ALL
SELECT 'HONDA' CAR,'CITY' MODEL,118 DEFECT_CODE
)TAB
查询以查找某辆车的缺陷车数量
SELECT DISTINCT CAR,DEFECT_CODE,COUNT(MODEL) OVER(PARTITION BY CAR) CARCOUNT
FROM #TEMP
WHERE DEFECT_CODE=123
结果
查询以查找某车型的缺陷车数量
SELECT *,COUNT(MODEL) OVER(PARTITION BY CAR,MODEL) CARMODELCOUNT
FROM #TEMP
WHERE DEFECT_CODE=123
结果
请提供示例数据错误:子查询返回的值不止一个。@user3512885-My bad未按检查
分组。请尝试新的应答列“B.cnt”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@user3512885-立即检查表名在哪里?