DevSSOM
SQL - 그룹으로 만들기 GROUP BY, 그룹에 조건 걸기 HAVING 본문
반응형
GROUP BY
데이터를 그룹화해서 표현하는 명령어.
※ LIMIT, ORDER BY, GROUP BY는 쿼리 마지막줄에 위치한다.
1) 유저별로 몇 권의 책을 빌렸는지 확인하기 위해, rental테이블의 user_id컬럼과 해당 컬럼값에 해당하는 데이터의 수를 차례대로 조회하기
SELECT user_id, COUNT(*) /* 검색할 컬럼 */
FROM rental
GROUP BY user_id; /* 그룹의 기준 컬럼*/
2) GROUP BY는 다른 내장함수들과 다양하게 조합해서 사용할 수 있음.
SELECT user_id, SUM(컬럼명) FROM rental GROUP BY user_id;
-- user_id가 같은 열에서 컬럼의 내용을 다 더한 값을 출력
SELECT user_id, AVG(컬럼명) FROM rental GROUP BY user_id;
-- user_id가 같은 열의 컬럼의 평균을 출력
SELECT user_id, MAX(컬럼명) FROM rental GROUP BY user_id;
-- user_id가 같은 열에서 해당 컬럼 중 가장 큰 값을 출력
SELECT user_id, MIN(컬럼명) FROM rental GROUP BY user_id;
-- user_id가 같은 열에서 해당 컬럼 중 가장 작은 값을 출력
3) salaries테이블에서 GROUP BY문을 이용해 직원별로 몇 번의 연봉을 받았는지 확인해보기. salaries 테이블의 emp_no 컬럼과 해당 컬럼값에 해당하는 데이터의 수를 차례대로 검색
select emp_no, count(*) from salaries group by emp_no;
HAVING
GROUP BY에 조건을 걸기 위해서 HAVING 함수를 함께 사용.
1) rental 테이블에서 user_id가 같은 데이터 중 2개 이상인 데이터가 몇 개 있는지 검색
SELECT user_id, COUNT(*) /* 검색할 컬럼 */
FROM rental
GROUP BY user_id /* 그룹의 기준 컬럼 */
HAVING COUNT(user_id) > 1; /* 조건 */
2) salaries 테이블에서 emp_no과 직원별로 연봉을 받은 횟수를 조회하되, 연봉을 10번 이상 받은 직원만 조회하기
select emp_no, count(*)
from salaries
group by emp_no
having count(emp_no) >= 10;
728x90
반응형
'DataBase' 카테고리의 다른 글
SQL - STANDARD SQL (0) | 2021.09.03 |
---|---|
SQL - 서브쿼리와 서브쿼리 분류(스칼라 서브쿼리) (0) | 2021.09.02 |
SQL - 두 개의 테이블 제어하기 INNER JOIN, LEFT JOIN, RIGHT JOIN (0) | 2021.09.01 |
SQL - 함수 : COUNT, LIMIT, SUM, AVG, MAX, MIN (0) | 2021.08.30 |
SQL - 데이터 정렬하기, ORDER BY (0) | 2021.08.29 |
SQL - 데이터 수정하기 : INSERT, UPDATE, DELETE (0) | 2021.08.29 |
SQL - 데이터에서 유사한 값 찾기, LIKE (0) | 2021.08.28 |
댓글