โ < 65๋ฒ - ์ฐ์ ์ ์๊ฑฐํธ๊ฐ ๋ด๊ธด ์ฅ๋ฐ๊ตฌ๋ >
https://school.programmers.co.kr/learn/courses/30/lessons/62284
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
with cte as (
SELECT cart_id,
group_concat(distinct name) as cart
from CART_PRODUCTS
group by cart_id
order by cart_id
)
select cart_id
from cte
where cart like '%Milk%' and cart like '%Yogurt%'
# ํต์ฌ ๊ฐ๋
in๊ณผ like์ ์ฐจ์ด์
select *
from table
where user_id in ('user_123', 'user_456', 'user_789')
select *
from table
where cart like '%milk%'
< 66๋ฒ - ์กฐํ์๊ฐ ๊ฐ์ฅ ๋ง์ ์ค๊ณ ๊ฑฐ๋ ๊ฒ์ํ์ ์ฒจ๋ถํ์ผ ์กฐํํ๊ธฐ >
https://school.programmers.co.kr/learn/courses/30/lessons/164671
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
with cte as (
select max(views) as max_view
from USED_GOODS_BOARD
)
SELECT concat('/home/grep/src/', b.board_id, '/', file_id, file_name, file_ext)
as file_path
from USED_GOODS_BOARD b
inner join USED_GOODS_FILE f
on b.board_id = f.board_id
where views = (
select max_view
from cte
)
order by file_id desc
< 67๋ฒ - ์ฃผ๋ฌธ๋์ด ๋ง์ ์์ด์คํฌ๋ฆผ๋ค ์กฐํํ๊ธฐ >
https://school.programmers.co.kr/learn/courses/30/lessons/133027
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
with cte as (
SELECT *
from FIRST_HALF
union all
select *
from JULY
)
select flavor
from cte
group by flavor
order by sum(total_order) desc
limit 3
โ โ < 68๋ฒ - ์ ์ ๋ณ ์นดํ ๊ณ ๋ฆฌ ๋ณ ๋งค์ถ์ก ์ง๊ณํ๊ธฐ >
https://school.programmers.co.kr/learn/courses/30/lessons/144856
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
select b.author_id,
author_name,
category,
sum(sales*price) as total_sales
from BOOK b
inner join author a on b.author_id = a.author_id
inner join book_sales s on b.book_id = s.book_id
where year(SALES_DATE) = 2022 and month(SALES_DATE) = 1
group by author_name, category
order by b.author_id, category desc
# group by sum(์ปฌ๋ผ1 * ์ปฌ๋ผ2)์ sum(์ปฌ๋ผ1) * ์ปฌ๋ผ2์ ์ฐจ์ด
group by sum(์ปฌ๋ผ1 * ์ปฌ๋ผ2)
SELECT a.author_id,
a.author_name,
b.category,
SUM(s.sales * b.price) AS total_sales
FROM book b
INNER JOIN book_sales s ON b.book_id = s.book_id
INNER JOIN author a ON b.author_id = a.author_id
WHERE YEAR(s.sales_date) = 2022 AND MONTH(s.sales_date) = 1
GROUP BY a.author_name, b.category
ORDER BY 1, 3 DESC;
-> ๊ฐ ๋์์ ํ๋งค๋๊ณผ ๊ฐ๊ฒฉ์ ์ ํํ ๋ฐ์ํ์ฌ ์ด ๋งค์ถ์ก์ ๊ณ์ฐ
group by sum(์ปฌ๋ผ1) * ์ปฌ๋ผ2
SELECT a.author_id,
a.author_name,
b.category,
SUM(s.sales) * b.price AS total_sales
FROM book b
INNER JOIN book_sales s ON b.book_id = s.book_id
INNER JOIN author a ON b.author_id = a.author_id
WHERE YEAR(s.sales_date) = 2022 AND MONTH(s.sales_date) = 1
GROUP BY a.author_name, b.category
ORDER BY 1, 3 DESC;
SUM(s.sales) * b.price๋ ์ ์ฒด ํ๋งค๋์ ํฉ๊ณ์ ํ๋์ ๋์ ๊ฐ๊ฒฉ(b.price)์ ๊ณฑํฉ๋๋ค.
๋ฌธ์ ๋ author_name๊ณผ category๋ณ๋ก ๊ฐ ๋์์ ๊ฐ๊ฒฉ์ด ๋ค๋ฅผ ์ ์๋ค๋ ์ ์ ๋๋ค.
๋ฐ๋ผ์ ์ด๋ค ๋์์ ๊ฐ๊ฒฉ์ ๊ณฑํ ์ง ๋ช ํํ์ง ์์ ๋ถ์ ํํ ๋งค์ถ์ก์ด ๊ณ์ฐ๋ ์ ์์ต๋๋ค.
โ โ โ < 69๋ฒ - ๋์ฌ ํ์๊ฐ ๋ง์ ์๋์ฐจ๋ค์ ์๋ณ ๋์ฌ ํ์ ๊ตฌํ๊ธฐ >
https://school.programmers.co.kr/learn/courses/30/lessons/151139
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
with cte as (
SELECT car_id
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where date_format(START_DATE, '%Y-%m') between '2022-08' and '2022-10'
group by car_id
having count(*) >= 5
)
select month(start_date) as month,
car_id,
count(*) as records
from CAR_RENTAL_COMPANY_RENTAL_HISTORY
where car_id in (
select car_id
from cte
) and date_format(start_date, '%Y-%m') between '2022-08' and '2022-10'
group by month(start_date), car_id
order by month(start_date),car_id desc
Question )
์ ๋ณธ๋ฌธ์์ date_format(start_date, '%Y-%m') between '2022-08' and '2022-10'์ ๋ ๋ถ์ฌ์ผ ํ๋์?
Answer )
๋ฌธ์ ์ ์กฐ๊ฑด์์๋ ๋์ฌ ์์์ผ์ด 2022๋ 8์๋ถํฐ 2022๋ 10์๊น์ง
with ์ ์์๋ car_id๋ณ 2022๋ 8์๋ถํฐ 2022๋ 10์๊น์ง ์นด์ดํธ๊ฐ์ด 5 ์ด์์ธ car_id๋ฅผ ๊ฐ์ ธ์จ๋ค
ํ๋์ ์ฒดํฌํ์๊ฐ 5๊ฐ์ด๋ฏ๋ก with ์ ์์ car_id 2๋ ํต๊ณผ
๊ทธ๋ฌ๋ car_id์ธ 2์์
start_date๊ฐ 11์์ด ์๋ ํ์ด ๋ฐ์ดํฐ์ ์๋ค๋ฉด (๋นจ๊ฐ์๋ถ๋ถ)
group by month(start_date), car_id๋ฅผ ํ์๋ 11์, 2๋ก ์ด ๋ฐ์ดํฐ ๋ํ ํฌํจ๋ ์ ์๋ค
๋ฐ๋ผ์ ๋ค์ ํํฐ๋ง ํด์ผํ๋ค