최근 업무에서는 서비스 사용성 파악을 위한 퍼포먼스 조회들을 많이 하고있다. 그러려면 아무래도 기본 쿼리에서 SUM, COUNT, GROUP BY 이 세가지 문장은 수시로 쓰게 된다. COUNT함수에 대한 정리를 해보자.
COUNT( 변수 )
: 변수의 갯수를 센다는 의미.
COUNT( * )
: 전체 갯수를 센다는 의미. (행 갯수로 봐도 무방하겠지?)
COUNT + DISTINCT (옵션을 넣으면?)
예시)아래 '음식'이라는 테이블 있다고 가정하면
과일 | 음료 |
바나나 | 물 |
딸기 | 커피 |
사과 | 커피 |
사과 | 커피 |
SELECT 과일, COUNT( * ) AS CNT
FROM 음식
GROUP BY 1
;
과일 | CNT |
바나나 | 1 |
딸기 | 1 |
사과 | 2 |
COUNT( DISTINCT 변수)
: 변수의 유니크한 갯수를 센다는 의미, 중복인 값을 제외하고 갯수를 세기때문에 변수값의 종류를 뽑아내는 값이라고 보아도 무방할것같다.
만약, COUNT DISTINCT를 이용하는데, 해당 변수들이 특정 조건을 만족하는 경우만을 세고싶다면 방법은 아래와 같다.
COUNT( DISTINCT (CASE WHEN 조건식1 AND 조건식2 THEN 변수 END)
: 이경우 변수를 유니크하게 숫자를 세되, 조건식1과 조건식2를 충족하는 경우에만 카운트하게된다. 조건이 3개 이상이라면 AND를 통해 더 나열해주면 된다. DISTINCT 옵션 뒤에 붙여서 CASE WHEN문을 쓰는구조인데, CASE문앞뒤를 꼭 괄오로 묶어줘야한다는점에 주의하자!
짧은 잡담
SAS자격증을 딴것이 무색하게도, SAS보다 SQL을 더 많이 이용하는 삶을 살고있다. 최근에는 SQL을 좀 더 잘 다루는 사람이 되고싶다고 생각 중. 하지만 일목요연하게 정리할 자신은 없기때문에 명령어/함수 단위로 실수했던 내용들을 기록해보려고 한다. 수시로 업데이트 할 예정
'OO하는 데이터분석가' 카테고리의 다른 글
[MySQL] 그룹내 순위(랭킹) 부여하는법 (0) | 2020.05.27 |
---|---|
[A/B테스트] ABtest의 기본 개념 (0) | 2020.05.26 |
[SAS]문자형 변수사이의 시간 차이 구하기 (1) | 2020.04.13 |
SAS 9.4 Base Programming – Performance Based Exam (A00-231) 합격수기 2 - 시험시 주의할 점 (1) | 2019.12.04 |
SAS 9.4 Base Programming – Performance Based Exam (A00-231) 합격수기, 연습문제, 공부방법과 기간 (9) | 2019.12.03 |