문제 (8) - 그룹화와 집계

실습문제를 통해 복습해보자...!
Chapter 8 - 그룹화와 집계

실습 8-1.

payment 테이블의 행 수를 계산하는 쿼리를 작성하라.

  • 고유값 관계없이 전체 행수를 계산하면 되니까 count(*) 함수를 사용하자.
mysql> SELECT COUNT(*)
    -> FROM payment;
    
+----------+
| COUNT(*) |
+----------+
|    16049 |
+----------+
1 row in set (0.00 sec)

실습 8-2.

[실습 8-1]의 쿼리를 수정하여 각 고객의 지불 횟수를 계산하라. 고객ID와 각 고객이 지불한 총 금액을 함께 표시하라.

  • payment 테이블을 살펴보자.
  • amount 라는 지불금액 열이 존재한다. 여기서 count(*) 함수를 사용하고, 고객ID별로 그룹화하면 되겠다.
  • 각 고객ID별 지불한 총 금액이 나타나야 하므로 sum() 함수를 사용해야 한다.
SELECT 
	customer_id
	, COUNT(*)
	, SUM(amount)
FROM payment 
GROUP BY 
	customer_id ;

총 고객 수가 599명이므로 599개의 행이 나타나고, 각 고객별로 지불한 총 금액이 합산되어 보여진다.

실습 8-3.

적어도 40회 이상 결제한 고객만 포함하도록 [실습 8-2]의 쿼리를 수정하라.

  • 결제횟수를 세야 하므로, count(*) 함수를 사용한다.
  • 고객 ID별로 그룹화하고, 그룹화 한 이후에 40회 이상 이라는 필터조건이 들어가야 하므로 HAVING 절에 조건을 넣는다.
SELECT 
	customer_id
	, COUNT(*)
	, SUM(amount)
FROM payment 
GROUP BY 
	customer_id 
HAVING 
	COUNT(*) >= 40 ; 

7개의 결과값이 나온다.

좋은 웹페이지 즐겨찾기