-
MySql - GROUP BY, ORDER BY, HAVING 간단 정리DataBase/MySql 2024. 8. 1. 23:21반응형
GROUP BY 함수 - 테이블의 행들을 특정 기준으로 그룹화할 때 사용
기본 적인 사용 방법은 아래와 같다.
SELECT column1
, aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1;- 실제 테이블 예시
SELECT SupplierID
, CategoryId
, AVG(Price)
FROM Products
GROUP BY SupplierID, CategoryId
예시1. employees 테이블에서 department별로 직원 수를 계산합니다.
SELECT department,
COUNT(*) AS employee_count
FROM employees
GROUP BY department;2. department와 job_title별로 직원 수를 계산합니다.
SELECT department, job_title, COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title;3. salary가 50,000 이상인 직원들만 포함하여 department별로 평균 급여를 계산합니다.
SELECT department, AVG(salary) AS average_salary
FROM employees
WHERE salary > 50000
GROUP BY department;
GROUP BY , ORDER BY 같이 사용하는 경우 예시
SELECT column1
,aggregate_function(column2)
FROM table_name
WHERE condition
GROUP BY column1
ORDER BY column1 [ASC|DESC];1. department별로 직원 수를 계산하고, 결과를 department 기준으로 오름차순으로 정렬합니다.
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
ORDER BY department ASC;2. department별 평균 급여를 계산하고, 평균 급여를 기준으로 내림차순으로 정렬합니다.
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
ORDER BY average_salary DESC;3. department와 job_title별로 직원 수를 계산하고, 결과를 department 기준으로 오름차순으로, 그리고 employee_count 기준으로 내림차순으로 정렬합니다.
SELECT department, job_title, COUNT(*) AS employee_count
FROM employees
GROUP BY department, job_title
ORDER BY department ASC, employee_count DESC;4. department별 평균 급여가 60,000 이상인 부서만 출력하고, 평균 급여를 기준으로 내림차순으로 정렬합니다.
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 60000
ORDER BY average_salary DESC;중요 사항
- ORDER BY 절은 GROUP BY 절 뒤에 위치해야 합니다.
- 기본적으로 ORDER BY는 오름차순(ASC)으로 정렬하며, 내림차순으로 정렬하려면 DESC를 사용합니다.
- 여러 컬럼을 기준으로 정렬할 수 있으며, 각 컬럼에 대해 오름차순 또는 내림차순을 지정할 수 있습니다.
반응형'DataBase > MySql' 카테고리의 다른 글
MySql - INNER JOIN (0) 2024.10.01 MySql - Case문 간단정리 (0) 2024.08.05 MySql - Count, Sum 함수(AVG, MIN, MAX) (0) 2024.08.01 Mysql - 기타 함수들(조건문) if, ifnull (0) 2023.10.12 Mysql - 시간,날짜 관련 함수(2) (0) 2023.10.12