[SQL] GROUP BY와 집계 함수를 사용할 때 주의할 점
2023. 8. 25. 01:52ㆍDATA PROGRAMMING/SQL
문제
위 문제는 집계함수를 활용해 여러 값들을 출력하는 문제인데, 주문 별로 GROUP BY한 이후 집계함수를 적용한다면 상품수의 평균은 count() 함수와 AVG()함수를 함께 사용해야 하고, 주문액합계의 평균은 SUM()과 AVG()함수를 함께 사용해야 한다. 이때, 하나의 테이블에서 두개의 집계함수를 모두 사용한다면, 에러가 발생한다.
WITH temp AS
(
SELECT orderNo,count(quantity) '상품수', sum(priceEach * quantity) '주문액합계'
FROM s_orderDetails
GROUP BY orderNo
)
SELECT count(orderNo) '주문수', AVG(상품수) '상품수의 평균', AVG(주문액합계) '주문액합계의 평균'
FROM temp;
이를 해결하기 위해 temp라는 임시테이블을 정의하고 그 테이블에서 일차적으로 집계함수를 적용해 구한 값들을 메인 테이블에서 다시 한 번 집계함수를 적용해 원하는 출력값들을 얻을수 있었다.
'DATA PROGRAMMING > SQL' 카테고리의 다른 글
[SQL] 정규표현식 함수 REGEXP_SUBSTR()의 이해 (0) | 2023.08.30 |
---|---|
[SQL] INSTR 함수와 SUBSTR 함수를 활용한 문자열 내의 특정 문자 추출 (0) | 2023.08.26 |
[SQL] GROUP BY, HVING 절 간단한 응용 (0) | 2023.08.24 |
SQL - SQL로 PIVOT 테이블 만들기 (0) | 2023.08.14 |
SQL - CTE를 이용해 Date Series 만들기 (0) | 2023.08.12 |