반갑습니다
저번 포스트에 이어서 실습예제 7-3입니다
이번 문제에서는 샘플 데이터로
customers 테이블과 orders 테이블을 사용합니다 ^^
하단에 파일 첨부합니다
customers 테이블의 스키마 구조와 데이터 정보입니다 ^^
orders 테이블의 스키마 구조와 데이터 정보입니다 ^^
예제11.
orders 테이블의 주문날짜의 최소값과 최대값을 조회하시오.
SELECT MIN(order_date) AS min_date,
MAX(order_date) as max_date
FROM orders;
집계 함수 중에 MIN()과 MAX() 함수를 사용하는 간단한 문제입니다 ^^
예제12.
2019년 12월 20일부터 2020년 1월 11일 사이에 주문한 사람은 몇 명인가?
SELECT COUNT(DISTINCT customer_id) AS "count"
FROM orders
WHERE order_date BETWEEN '2019-12-20' AND '2020-01-11';
WHERE 키워드를 이용해서 조건을 첨부하실 때
해당 날짜의 범위에 맞는 조건식으로 조회해주시면 되겠습니다 ^^
예제13.
2019년 12월 20일부터 2020년 1월 10일 사이의 주문 데이터 중
고객별 주문금액 평균이 300달러 이상인 회원의 이름, 평균금액 조회하시오.
SELECT c.first_name, c.last_name, AVG(amount) AS avg_amount
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.id
WHERE order_date BETWEEN '2019-12-20' AND '2020-01-11'
GROUP BY c.email
HAVING avg_amount > 300
ORDER BY avg_amount DESC;
마지막 13번 문제는 조건이 두 개입니다 ^^
먼저는 해당 기간 내의 주문 정보여야 하고,
해당 주문 정보의 평균 금액이 300 이상이어야 합니다 ^^
SQL문의 내부처리 순서상
WHERE → GROUP BY → HAVING → SELECT → ORDER BY의 차례를 갖기 때문에
①WHERE 구를 이용해 해당 조건 내의 주문 정보로 추려야하고
②그룹화 이후 평균 금액이 300 이상인 데이터를 다시 한 번 추려내야 합니다 ^^
이번에도 역시 고객 정보만 존재하고 한 번도 주문을 하지 않은 경우가 있을 수 있으니
그냥 JOIN 연산이 아니라 LEFT JOIN 연산을 적용하였습니다 ^^!
마지막으로 평균 주문금액을 기준으로 내림차순 정렬을 해주면,
문제에서 요구하는 해당 조건을 만족하는 데이터를 조회할 수 있습니다 ^^!
이상으로 실습예제 7을 마무리하도록 하겠습니다 ^^!
'MySQL > 실습문제' 카테고리의 다른 글
[EXERCISES] 17. 실습예제(7-2) (0) | 2024.08.10 |
---|---|
[EXERCISES] 16. 실습예제(7-1) (0) | 2024.08.10 |
[EXERCISES] 15. 실습예제(6-4) (0) | 2024.08.10 |
[EXERCISES] 14. 실습예제(6-3) (0) | 2024.08.10 |
[EXERCISES] 13. 실습예제(6-2) (0) | 2024.08.08 |