SQL

SQL의 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 쉽게 이해하기

초코너무조코 2025. 1. 23. 10:24
728x90

 

목차


    예제: 고객 구매 데이터를 분석하기

    다음은 고객 구매 데이터를 담은 sales 테이블입니다.

    customer_id product_id  category quantity price sale_date
    1 101 Electronics 2 300 2023-01-01
    2 102 Clothing 1 50 2023-01-02
    1 103 Electronics 1 150 2023-01-03
    3 104 Clothing 3 60 2023-01-03
    2 105 Electronics 1 500 2023-01-04

    SQL 쿼리 예제

    SELECT category, SUM(price * quantity) AS total_sales
    FROM sales
    WHERE sale_date >= '2023-01-01' AND sale_date <= '2023-01-03'
    GROUP BY category
    HAVING SUM(price * quantity) > 200
    ORDER BY total_sales DESC;
    

    각 절에 대한 설명

    1. SELECT: 가져올 데이터를 선택

    SELECT는 결과에 표시할 열(또는 계산)을 선택합니다.
    위 예제에서는 category와 총 매출액(SUM(price * quantity))을 가져옵니다.

    category, total_sales라는 열이 쿼리 결과에 표시됩니다.


    2. FROM: 데이터를 가져올 테이블 지정

    FROM은 데이터를 가져올 테이블을 지정합니다.
    위 예제에서는 sales 테이블에서 데이터를 가져옵니다.


    3. WHERE: 조건을 지정하여 데이터를 필터링

    WHERE는 조건을 지정하여 원하는 데이터만 필터링합니다.
    위 예제에서는 다음 조건이 적용됩니다

    • sale_date가 2023-01-01 이상이고,
    • sale_date가 2023-01-03 이하인 데이터.

    즉, 1월 4일 데이터는 제외됩니다.


    4. GROUP BY: 데이터를 그룹화

    GROUP BY는 지정한 열을 기준으로 데이터를 그룹화합니다.
    위 예제에서는 category별로 데이터를 그룹화하여, 각 카테고리의 총 매출을 계산합니다.


    5. HAVING: 그룹화된 데이터에 조건 추가

    HAVING은 GROUP BY 이후의 그룹화된 데이터에 조건을 적용합니다.
    위 예제에서는 다음 조건이 적용됩니다:

    • 총 매출(SUM(price * quantity))이 200을 초과하는 카테고리만 선택.

    WHERE와 다른 점은 HAVING은 그룹화된 결과에 조건을 적용한다는 것입니다.


    6. ORDER BY: 결과를 정렬

    ORDER BY는 결과를 정렬합니다.
    위 예제에서는 총 매출(total_sales)을 기준으로 내림차순(DESC)으로 정렬합니다.


    쿼리 실행 결과

    위 쿼리를 실행하면 다음과 같은 결과가 나옵니다.

    category total_sales

    Electronics 750
    Clothing 230

    이제 SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY의 역할이 좀 더 명확해졌나요?
    SQL을 작성할 때 각 절의 순서와 역할을 기억하면 훨씬 더 쉽게 쿼리를 작성할 수 있을 거예요! 😄

     

     

    728x90