Q11) 마지막 연습 문제!
다음과 같은 상품(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
|
44. 모든 주문의 주문 ID와 주문된 상품의 이름을 나열하는 쿼리를 작성해주세요!
더보기
SELECT o.id, p.name
FROM orders o
JOIN products p ON o.product_id = p.id
FROM orders o
JOIN products p ON o.product_id = p.id
45. 총 매출(price * quantity의 합)이 가장 높은 상품의 ID와 해당 상품의 총 매출을 가져오는 쿼리를 작성해주세요!
더보기
SELECT o.product_id, SUM(p.price * o.quantity) AS total
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY o.product_id
ORDER BY total DESC
LIMIT 1
FROM orders o
JOIN products p ON o.product_id = p.id
GROUP BY o.product_id
ORDER BY total DESC
LIMIT 1
46. 각 상품 ID별로 판매된 총 수량(quantity)을 계산하는 쿼리를 작성해주세요!
더보기
SELECT product_id, SUM(quantity) AS total
FROM orders
GROUP BY product_id
FROM orders
GROUP BY product_id
47. 2023년 3월 3일 이후에 주문된 모든 상품의 이름을 나열하는 쿼리를 작성해주세요!
더보기
SELECT p.name
FROM orders o
JOIN products p ON o.product_id = p.id
WHERE o.order_date > '2023-03-03'
FROM orders o
JOIN products p ON o.product_id = p.id
WHERE o.order_date > '2023-03-03'
48. 가장 많이 판매된 상품의 이름을 찾는 쿼리를 작성해주세요!
더보기
SELECT p.name, SUM(o.quantity) AS total
FROM products p
JOIN orders o ON p.id = o.product_id
GROUP BY p.id
ORDER BY total DESC
LIMIT 1
FROM products p
JOIN orders o ON p.id = o.product_id
GROUP BY p.id
ORDER BY total DESC
LIMIT 1
49. 각 상품 ID별로 평균 주문 수량을 계산하는 쿼리를 작성해주세요!
더보기
SELECT product_id, AVG(quantity) AS avg
FROM orders
GROUP BY product_id
FROM orders
GROUP BY product_id
50. 판매되지 않은 상품의 ID와 이름을 찾는 쿼리를 작성해주세요!
더보기
SELECT p.id, p.name
FROM products p
LEFT JOIN orders o ON p.id = o.product_id
WHERE o.id IS NULL
FROM products p
LEFT JOIN orders o ON p.id = o.product_id
WHERE o.id IS NULL
핵심 개념 정리
🔹 JOIN 활용 정리
44 | INNER JOIN | o.product_id = p.id | 주문 테이블과 상품 테이블을 결합 |
45 | INNER JOIN | p.id = o.product_id | 상품과 주문을 조인하여 매출 계산 |
46 | INNER JOIN | p.id = o.product_id | 상품 ID별 판매량 계산 |
47 | INNER JOIN | p.id = o.product_id | 특정 날짜 이후 주문된 상품 찾기 |
48 | INNER JOIN | p.id = o.product_id | 가장 많이 판매된 상품 찾기 |
49 | INNER JOIN | p.id = o.product_id | 상품별 평균 주문량 계산 |
50 | LEFT JOIN | p.id = o.product_id | 주문되지 않은 상품 찾기 |
👉 INNER JOIN은 orders 테이블과 products 테이블의 일치하는 데이터만 조회할 때 사용
👉 LEFT JOIN은 products 테이블 기준으로 주문되지 않은 상품을 찾을 때 사용
'PM > SQL' 카테고리의 다른 글
[내일배움캠프 TIL] 사전캠프 11일차 SQL 기초(10) (1) | 2025.03.24 |
---|---|
[내일배움캠프 TIL] 사전캠프 10일차 SQL 기초(9) (0) | 2025.03.21 |
[내일배움캠프 TIL] 사전캠프 9일차 SQL 기초(8) (1) | 2025.03.20 |
[내일배움캠프 TIL] 사전캠프 8일차 SQL 기초(7) (0) | 2025.03.19 |
[내일배움캠프 TIL] 사전캠프 7일차 SQL 기초(6) (0) | 2025.03.18 |