[SQL 2-3강] GROUP BY, HAVING

2021. 5. 20.·🤓 기술 학습 & 공부 기록/컴퓨터 일반

[강의명]
패스트캠퍼스 SQL 100제 + 자격증 완성 온라인 완주반

[수강목록]
24. 조인과 집계 데이터 - 08. Group By절
25. 조인과 집계 데이터 - 09. Having절

[강의내용]

 

24. 조인과 집계 데이터 - 08. Group By절

 

GROUP BY절은 SELELCT문에서 반환된 행을 그룹으로 나눈다. 각 그룹에 대한 합계, 평균, 카운트 등과 같은 집계함수 계산을 할 수 있다.

SUM과 같은 집계(Aggregation)함수를 사용할때는 반드시 GROUP BY를 사용해야 한다.

 

[문법]

SELECT COLUMN_1, 집계함수(COLUMN_2)
FROM TABLE_NAME
GROUP BY COLUMN_1;

 

GROUP BY 절은 FROM 또는 WHERE절 바로 뒤에 나타나야 함

 

[실습1]

SELECT CUSTOMER_ID
FROM PAYMENT
GROUP BY CUSTOMER_ID;

 

customer_id를 기준으로 GROUP BY를 실행했기 때문에 DISTINCT와 동일한 결과를 가져온다.

 

쿼리 결과

[실습2]

거래액이 가장 많은 고객 순으로 출력해본다.

 

SELECT CUSTOMER_ID,
       SUM(AMOUNT) AS AMOUNT
FROM PAYMENT
GROUP BY CUSTOMER_ID
ORDER BY amount DESC ;

 

쿼리 결과

[실습3]

staff별로 얼마나 많은 payment건을 처리했는지 조회해본다.

 

SELECT staff_id, count(payment_id) AS count
FROM payment
GROUP BY staff_id;

 

쿼리 결과

 

25. 조인과 집계 데이터 - 09. Having절

 

GROUP BY절과 함께 HAVING절을 사용하여 GROUP BY의 결과를 특정 조건으로 필터링하는 기능을 한다.

WHERE절과 비슷하나, WHERE절의 다음 순서로 필터링을 진행한다.

 

[문법]

SELECT COLUMN_1, 집계함수(COLUMN_2)
FROM TABLE_NAME
GROUP BY COLUMN_1
HAVING 조건식;

 

[실습1]

200 이상 구매한 고객들의 정보를 조회해본다.

 

SELECT A.CUSTOMER_ID,
       B.EMAIL,
       SUM(A.AMOUNT) AS AMOUNT_SUM
FROM PAYMENT A,
     CUSTOMER B 
WHERE A.CUSTOMER_ID = B.CUSTOMER_ID       
GROUP BY A.CUSTOMER_ID,B.EMAIL
HAVING SUM(A.AMOUNT) > 200;

 

[실습2]

스토어별 고객 수를 조회해본다.

 

SELECT STORE_ID,
       COUNT(CUSTOMER_ID) AS COUNT
FROM CUSTOMER
GROUP BY STORE_ID;

 

'🤓 기술 학습 & 공부 기록/컴퓨터 일반' 카테고리의 다른 글
  • [SQL 2-4강 (2)] UNION, UNION ALL
  • [SQL 2-4강 (1)] GROUP BY, HAVING, JOIN, CASE, ROUND
  • [SQL 2-2강 (2)] JOIN, LEFT, CASE
  • [SQL 2-2강 (1)] JOIN, NATURAL JOIN
지식물원
지식물원
지식이 자라는 식물원!
  • 지식물원
    지식물원
    지식물원
  • 전체
    오늘
    어제
    • 분류 전체보기 (510)
      • 🎨 프론트엔드 공부 (247)
        • JS & TS (86)
        • HTML & CSS (22)
        • React & Next (49)
        • Vue & Nuxt (22)
        • 기타 (68)
      • 🤓 기술 학습 & 공부 기록 (116)
        • Node.js (0)
        • Python (37)
        • 백엔드 (0)
        • 딥러닝 (1)
        • 컴퓨터 일반 (72)
        • 개발 인프라 (6)
      • 👨‍💻 프로젝트 경험 (6)
        • Work (0)
        • Toy (6)
      • ⚙️ 개발 팁 & 노하우 (21)
        • 프론트엔드 (6)
        • 기타 (15)
      • ☕️ 커리어 & 인터뷰 준비 (88)
        • 코딩 테스트 (88)
      • 📰 기술 트렌드 & 생각 정리 (4)
      • 📚 기타 (25)
        • 마케팅 (15)
        • 비개발서적 (10)
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

    • 모바일 접속 시 코드 하이라이팅 깨질 때
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
지식물원
[SQL 2-3강] GROUP BY, HAVING
상단으로

티스토리툴바