SQL (DB2) 단일 쿼리에서 여러 조건부 카운트를 반환합니다.
문제
DB2 기반 데이터베이스에서 단일 테이블 결과로 여러 조건부 요약을 선택하려고합니다.
예시:
SELECT COUNT(FOO) FROM T1 WHERE T1.A=1 AS A_COUNT,
SELECT COUNT(FOO) FROM T1 WHERE T1.B=2 AS B_COUNT
Ext...
모든 도움이 감사합니다.
해결책
이것은 각 조건의 발생을 계산합니다.
select sum(case when t1.a = 1 then 1 else 0 end) as A_COUNT
, sum(case when t1.b = 2 then 1 else 0 end) as B_COUNT
from t1
where t1.a = 1
or t1.b = 2
다른 팁
select count(case when t1.a = 1 then foo else null end) as A_COUNT
, count(case when t1.b = 2 then foo else null end) as B_COUNT
from t1
where t1.a = 1
or t1.b = 2
조항이 선택적으로 엄격하게 말하지만 성능을 도울 수 있습니다. 또한 다른 조항이 생략 될 때 "else null"은 암시되어 있으므로 안전하게 남겨 두십시오.
select count(foo)
from t1
where a = 1
union
select count(foo)
from t1
where b = 2
....
이것은 할 것입니다.
SELECT A_COUNT as Type ,COUNT(FOO) FROM T1 WHERE T1.A=1,
Union
SELECT B_COUNT as Type, COUNT(FOO) FROM T1 WHERE T1.B=2
제휴하지 않습니다 StackOverflow