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