20220214_SQL 기초 4 (GROUP BY와 집계함수)
2022. 2. 17.ㆍ공부/SQL, R
728x90
ORDER BY는 데이터를 오름차순, 내림차순으로 조회해주긴 하지만 컬럼명으로 데이터가 그룹핑되어 데이터가 뽑혀나오지는 않는다. 예를 들어 id와 구매 갯수 데이터가 구매 시점별로 적재되어있는 테이블에서 데이터를 조회한다면, 같은 id일지라도 각각 별도의 저장 공간에 데이터가 적재되어 아래의 [전]과 같은 모습을 볼 수 있다. 이는 ORDER BY를 사용하더라도 동일하며, id가 같은 데이터를 그룹핑해주고 싶다면 함수와 함께 GROUP BY라는 키워드를 별도로 사용한다.
GROUP BY는 같은 데이터를 하나의 그룹으로 묶어준다. GROUP BY는 컬럼을 인자로 한 집계 함수와 함께 사용하며, 자주 쓰이는 집계 함수는 다음과 같다.
AVG() | 평균 |
MIN() | 최소값 |
MAX() | 최대값 |
COUNT() | 결과의 row 개수 |
COUNT(DISTINCT) | 결과의 종류 개수 |
STDEV() | 표준편차 |
VAR_SAMP() | 분산 |
GROUP BY를 사용할 때의 GROUP BY 뒤에 오는 조건절은 WHERE이 아닌 HAVING으로 처리하게 된다. GROUP BY를 사용할 때 SELECT 뒤에 오는 집계 함수는 alias를 정해주어 컬럼명을 작성해주는 것이 좋다.
SELECT user_id, sum(price*amount) as '총구매액' FROM buyTbl GROUP BY user_id WHERE 250000 < sum(price*amount);
// GROUP BY 뒤에 WHERE로 조건 걸면 코드 실행이 되지 않음
SELECT user_id, sum(price*amount) as '총구매액' FROM buyTbl GROUP BY user_id HAVING 250000 < sum(price*amount);
// GROUP BY 뒤에 WHERE 대신 HAVING으로 조건 걸어 코드 개선
'공부 > SQL, R' 카테고리의 다른 글
20220216_SQL 기초 6 (PRIMARY KEY를 가진 테이블 수정하기) (0) | 2022.02.17 |
---|---|
20220215_SQL 기초 5(SQL 구문의 분류, INSERT로 자료 넣는 3가지 방법, TRUNCATE로 로그 남기지 않고 빠르게 삭제) (0) | 2022.02.17 |
20220214_SQL 기초 4 (서브 쿼리와 alias) (0) | 2022.02.17 |
[Mysql] Mac의 CMD에서 Mysql 이용하기 (0) | 2022.02.16 |
20220211_SQL 기초 3 (AUTO_INCREMENT, FOREIGN KEY(외래키), 범위 조회, LIKE 연산자) (0) | 2022.02.16 |