programming/SQL

SQL COUNT, CASE WHEN함수 함께 사용하기

Jofresh 2023. 7. 17. 21:30
728x90
반응형

안녕하세요.

오늘은 sql count함수와 case when 함수를 함께 사용하는 방법에 대해서 포스팅하도록 하겠습니다.

 

실무에서 꽤나 자주 사용되는 함수 조합인데요.

 

그럼 한 번 알아보도록 하겠습니다.

 


where 절

보통은 아래와 같이 where 절을 사용해서 '~이상인 값' 데이터만 출력할 수 있습니다.

SELECT COUNT(*) 
FROM 테이블이름
WHERE 전체 배달시간 >= 60;

그러나, 전체 배달시간 60이하인 것들과 함께 비교해야 할 때, 혹은 그런 케이스가 얼마나 있는지 확인하기 위해서는 select 절에서 case when 함수와 함께 사용하는 것이 좋은데요.

 


count + case when 함수

아래와 같이 작성하면 "전체 배달시간"이 60분 이상인 값들을 숫자로 카운팅할 수 있습니다.

SELECT COUNT(CASE WHEN "전체 배달시간" >= 60 THEN 1 END)
FROM 테이블이름;

 

조금 더 응용해보겠습니다.

 

아래와 같이 작성한다면, 

 

"지역1"별로 "전체 배달시간"이 60분 이상인 케이스를 확인할 수 있습니다.

SELECT 
지역1,
COUNT(CASE WHEN "전체 배달시간" >= 60 THEN 1 END)

FROM 테이블이름

GROUP BY 지역1

 

그리고 아래처럼 "전체 배달시간"을 한 번더 작성해주고, 둘을 나누면 비중을 계산할 수 있게 됩니다.

SELECT 
지역1,
COUNT(CASE WHEN "전체 배달시간" >= 60 THEN 1 END),
COUUNT("전체 배달시간"),
COUNT(CASE WHEN "전체 배달시간" >= 60 THEN 1 END)/COUUNT("전체 배달시간")--전체 주문건 중에서 60분 이상 걸린 주문건수 비중이 얼마나 되는지?

FROM 테이블이름

GROUP BY 지역1

 

반응형

 

 

그리고 만약에 "전체 배달시간"이 카운팅하기 애매하다고 하면 다른 확실한 컬럼을 카운팅할 수 도 있는데요.

아래처럼 숫자 1 대신에 "카운팅하고 싶은 컬럼"명을 적으면,

 

"전체 배달시간"컬럼이 60분 이상인 "카운팅하고 싶은 컬럼"을 세는 것도 가능합니다.

SELECT 
지역1,
COUNT(CASE WHEN "전체 배달시간" >= 60 THEN "카운팅하고 싶은 컬럼" END)

FROM 테이블이름

GROUP BY 지역1

 

 

 

 

 

 

 

728x90
반응형