다음과 같은 상품(products) 테이블과 주문(orders) 테이블이 있습니다.
- products 테이블
id name price
| 1 | 랩톱 | 1200 |
| 2 | 핸드폰 | 800 |
| 3 | 타블렛 | 400 |
- orders 테이블
id product_id quantity order_date
| 101 | 1 | 2 | 2023-03-01 |
| 102 | 2 | 1 | 2023-03-02 |
| 103 | 3 | 5 | 2023-03-04 |
- 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
- 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
- 각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
- 2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
- 가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
- 각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
- 판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!
A1.
SELECT o.id '주문번호', p.name '상품이름'
FROM orders o
JOIN products p
ON p.id = o.product_id;
A2.
SELECT p.id '상품ID', SUM(p.price*o.quantity) '총매출'
FROM products p
JOIN orders o
ON p.id = o.product_id
GROUP BY p.id;
A3.
SELECT p.id '상품ID', SUM(o.quantity) '판매수량'
FROM products p
JOIN orders o
ON p.id = o.product_id
GROUP BY p.id
A4.
SELECT o.order_date '주문날짜', p.name '상품이름'
FROM products p
JOIN orders o
ON p.id = o.product_id
WHERE o.order_date > '2023-03-03';
A5.
SELECT p.name '상품이름'
FROM products p
JOIN(
SELECT product_id, SUM(quantity) '판매수량'
FROM orders
GROUP BY product_id
) o
ON p.id = o.product_id
ORDER BY o.총판매수량 DESC
LIMIT 1;
A6.
SELECT p.id '상품ID', AVG(o.quantity) '평균주문수량'
FROM products p
JOIN orders o
ON p.id = o.product_id
GROUP BY p.id;
A7.
SELECT p.id '상품ID', p.name '상품이름'
FROM products p
LEFT JOIN orders o
ON p.id = o.product_id
WHERE o.product_id IS NULL;
'SQL연습문제' 카테고리의 다른 글
| 10) 이젠 테이블이 2개입니다 (0) | 2024.08.29 |
|---|---|
| 9)아프면 안됩니다! 항상 건강 챙기세요! (0) | 2024.08.28 |
| 8) LOL을 하다가 홧병이 나서 병원을 찾아왔습니다. (0) | 2024.08.28 |
| 7) 랭크게임 하다가 싸워서 피드백 남겼어요… (0) | 2024.08.28 |
| 6) 팀 프로젝트 열심히 했으니 다시 놀아볼까요?! (1) | 2024.08.28 |