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
반응형