GROUP BY
원래 그룹함수와 일반컬럼은 함께 조회할 수없다!
(그룹함수는 딱 한개만의 결과를 출력해야해서 일반컬럼이 추가 될 수 없기 때문)
SELECT COUNT(*), first_name FROM employees;
SELECT job_id, COUNT(*) FROM employees;
그룹함수와 일반함수를 함께 조회하고싶다면 => GROUP BY를 사용해야 한다
그룹 함수란?
그룹함수란?
여러개의 행 또는 테이블 전체에 대하여 하나의 결과만을 가져오는 함수
그룹함수만 일반컬럼과 함께 사용될 수 없다
1) AVG() : 평균 구하는 함수
2) COUNT() : 행의 개수를 반환하는 함수 (null 값은 무시함)
3) MAX() : 최대값을 구하는 함수
4) MIN() : 최소값을 구하는 함수
5) SUM() : 총 합을 구하는 함수
[DBMS_09] 함수 (그룹 숫자 문자 날짜)
1. 그룹함수 여러개의 행 또는 테이블 전체에 대하여 하나의 결과만을 가져오는 함수 그룹함수만 일반컬럼과 함께 사용될 수 없다 1) AVG() : 평균 구하는 함수 2) COUNT() : 행의 개수를 반환하는 함
korany0410.tistory.com
1. 하나의 일반 컬럼을 그룹으로 묶는 방법 => 하나의 컬럼을 GROUP BY 뒤에 써주기
-- 예제1)
직종별 인원수 카운트 하시오
SELECT job_id, COUNT(*) FROM employees
GROUP BY job_id;
-- 예제2)
같은 이름을 가진 사람들의 수를 카운트 하시오
SELECT first_name, COUNT(*) FROM employees
GROUP BY first_name;
--예제3)
부서번호가 같은 사원들의 부서번호, 인원수, 급여평균, 급여 총합을 조회하되, 부서번호가 낮은 순으로 정렬
SELECT department_id, count(*), TRUNC( avg(salary), 0 ), sum(salary)
FROM employees
GROUP BY department_id
ORDER BY department_id;
--예제4)
부서별로 부서번호, 높은 급여, 낮은 급여 순으로 출력하되, 부서번호가 낮은 순으로 정렬
SELECT department_id, MAX(salary), MIN(salary)
FROM employees
GROUP BY department_id
ORDER BY department_id;
2. 여러 일반컬럼을 그룹으로 묶는 방법 => 여러개의 컬럼을 GROUP BY 뒤에 모두 써주기
--예제1)
부서번호와 직종을 그룹으로 묶어서 부서번호, 직종, 급여의 합을 출력(부서번호 오름차순)
SELECT department_id, job_id, SUM(salary)
FROM employees
GROUP BY department_id, job_id
ORDER BY department_id;
--예제2)
부서번호와 직종을 그룹으로 묶어서 부서번호, 직종, 인원수 순으로 출력하되, 부서번호가 낮은 순으로 정렬
SELECT department_id, job_id, COUNT(*)
FROM employees
GROUP BY department_id, job_id
ORDER BY department_id;
--예제3)
부서번호, 직종을 그룹화해서 부서번호, 직종, 급여의 합, 사원수, 평균 급여를 출력하되,
부서번호가 낮은 순, 급여의 합이 큰 순으로 정렬
SELECT department_id, job_id, SUM(salary), COUNT(*), TRUNC( AVG(salary) , 0 )
FROM employees
GROUP BY department_id, job_id
ORDER BY department_id , SUM(salary) DESC;
'DBMS' 카테고리의 다른 글
[DBMS_13] 서브 쿼리 (SELECT 문장 안에 SELECT 중첩) (0) | 2023.03.10 |
---|---|
[DBMS_12] HAVING절 ( GROUP함수의 조건 비교는 WHERE대신 HAVING) (0) | 2023.03.09 |
[DBMS_10] JOIN 키워드 (0) | 2023.03.08 |
[DBMS_01] DBMS 기본 용어 정리 (0) | 2023.03.07 |
[DBMS_03] SELECT문 (테이블 조회) (0) | 2023.03.07 |