[SQL] GROUP BY

hyunsooSong·2022년 5월 22일
0

SQL

목록 보기
1/14
post-thumbnail

👬 GROUP BY

1. HAVING절을 집계함수 없이 사용하기

💡 GROUP BY로 그룹핑된 컬럼에 대해서 HAVING 조건절을 사용 할 경우 집계된 컬럼의 FILTER 조건으로 사용 가능하다.

SELECT 메뉴ID
FROM 시스템사용이력
WHERE 사용일시 BETWEEN SYSDATE - 1 AND SYSDATE
GROUP BY 메뉴ID
HAVING 메뉴ID = 3;

2. 중첩된 그룹함수

💡 중첩된 그룹함수는 최종 결과 값이 1건이니 GROUP BY절에 기술된 컬럼은 SELECT절에서 기술 될 수 없다.

SELECT 메뉴ID, AVG(COUNT(*)) AS AVGGNT
FROM 시스템사용이력
GROUP BY 메뉴ID;

3. SELECT절에서 기술되지 않은 컬럼 ORDER BY절에서 사용하기. (ORACLE SQL)

💡 오라클은 행기반 database이기 때문에 데이터를 액세스 할 때 행 전체 컬럼을 메모리에 로드한다. 이와 같은 특성으로인해 SELECT절에 기술되지 않은 컬럼으로도 정렬이 가능하다.
  • GROUP BY를 사용하면 ORDER BY에서 집계함수 사용 가능.

SELECT 지역, SUM(매출금액) AS 매출금액
FROM 지역별매출
GROUP BY 지역
HAVING SUM(매출금액) > 1000
ORDER BY COUNT(제품개수) ASC;

📌 주의!! 아래의 SQL은 IN-LINE VIEW가 먼저 수행됨에 따라 더 이상 SELECT절 외의 컬럼은 사용 할 수 없다.

SELECT 지역, SUM(매출금액) AS 매출금액
FROM (
    SELECT 지역, 매출금액
    FROM 지역별매출

)
ORDER BY ASC;

📌 주의!! GROUP BY를 사용할 경우 GROUP BY 표현식이 아닌 값은 기술될 수 없다.

SELECT 지역, SUM(매출금액) AS 매출금액
FROM 지역별매출
GROUP BY 지역
ORDER BY DESC;



+ 👀 틈새 지식

💡 SELECT 문장의 실행 순서
: FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

profile
🥕 개발 공부 중 🥕

0개의 댓글