SQL (DB2) 단일 쿼리에서 여러 조건부 카운트를 반환합니다.

StackOverflow https://stackoverflow.com/questions/1018469

  •  06-07-2019
  •  | 
  •  

문제

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 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top