과정 설명
- 가상의 컬럼 계산:
- FLOOR(PRICE / 10000) * 10000 AS PRICE_GROUP: PRICE 값을 바탕으로 계산식을 사용하여 PRICE_GROUP을 정의합니다.
- 이 PRICE_GROUP은 실제로 테이블에 존재하지 않는 가상의 컬럼입니다.
- GROUP BY 절에서의 사용:
- GROUP BY FLOOR(PRICE / 10000) * 10000: 실제로 GROUP BY 절은 SELECT 절에서 정의된 식을 직접 사용하여 그룹화를 수행합니다. 이때 PRICE_GROUP은 별칭(alias)으로 정의되지만, 실제 그룹화 작업에서는 해당 식이 사용됩니다.
- SQL 엔진은 SELECT 절에서 정의된 FLOOR(PRICE / 10000) * 10000 식을 GROUP BY 절에서도 동일하게 적용하여 데이터를 그룹화합니다.
- 실제 SQL 엔진 동작:
- SQL 쿼리의 실행 순서에 따라, SQL 엔진은 먼저 FROM 절에서 테이블의 데이터를 읽어온 후, WHERE 절이 있으면 조건을 적용합니다.
- GROUP BY 절에서는 SELECT 절에서 정의된 식을 계산하여 데이터를 그룹화합니다. 이 단계에서 PRICE_GROUP이라는 별칭을 사용하는 것이 아니라, 실제 계산식인 FLOOR(PRICE / 10000) * 10000을 사용하여 그룹을 만듭니다.
- 결과 선택 및 집계:
- 그룹화가 완료된 후, SELECT 절에서 PRICE_GROUP이라는 별칭을 사용하여 결과를 선택하고, COUNT(*)를 통해 각 그룹의 레코드 수를 계산합니다.
- 정렬:
- 마지막으로, ORDER BY PRICE_GROUP 절을 사용하여 결과를 정렬합니다.
예시 결과
다시 예시를 들어 보면, 데이터가 다음과 같다고 가정합니다:

- 계산된 PRICE_GROUP 값:
- 10,000원(10000)
- 9,000원은 그룹화에 포함되지 않음 (0 ~ 9999)
- 22,000원(20000)
- 15,000원(10000)
- 30,000원(30000)
- 17,000원(10000)
- 그룹화 결과:
- 0 ~ 9999 : 1개
- 10000 ~ 19999 : 3개
- 20000 ~ 29999 : 1개
- 30000 ~ 39999 : 1개
이 결과는 최종적으로 PRICE_GROUP과 PRODUCTS를 기준으로 출력됩니다.
결론
- SQL 쿼리에서 SELECT 절의 계산식은 그룹화와 집계 작업에 필수적입니다.
- GROUP BY 절에서 실제로는 SELECT 절에 정의된 계산식을 사용하여 데이터를 그룹화합니다.
- 결과적으로, PRICE_GROUP이라는 가상의 컬럼을 정의하고 사용하는 방식으로, 쿼리의 각 단계에서 필요한 계산을 수행하여 최종 결과를 생성합니다.
'SQL' 카테고리의 다른 글
[SQL 고득점 Kit] GROUP BY : 언어별 개발자 분류하기 (0) | 2024.08.21 |
---|---|
SQL TMP (1) | 2024.08.13 |
SQL 정리 (0) | 2024.08.02 |
[SQL 고득점 Kit] SELECT : 재구매가 일어난 상품과 회원 리스트 구하기 (0) | 2024.08.01 |
SQL (0) | 2024.07.29 |
댓글