본문 바로가기
SQL

sql

by shur_ 2024. 8. 7.

과정 설명

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

댓글