ABOUT ME

Today
Yesterday
Total
  • 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' 카테고리의 다른 글

    댓글

Designed by Tistory.