๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
6๏ธโƒฃ SQL/Problem Solving

[MySQL] Programmers Lv.1 ์ „์ฒด ๋ฌธ์ œ ํ’€์ด (2023 ์—…๋ฐ์ดํŠธ!)

by seolhee2750 2023. 4. 26.

์ตœ๊ทผ Programmers์— ์ƒˆ๋กœ์šด SQL ๋ฌธ์ œ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ๊ธธ๋ž˜ ํด๋ฆฌ์–ด ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๐Ÿ™‰

์ด์ „ ๋ฌธ์ œ๋“ค์€ ๐Ÿ‘‰์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!

 

๊ฐ•์›๋„์— ์œ„์น˜ํ•œ ์ƒ์‚ฐ๊ณต์žฅ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
select factory_id, factory_name, address
from food_factory
where substr(address, 1, 3) = "๊ฐ•์›๋„"
# where left(address, 3) = "๊ฐ•์›๋„"
# where address like "๊ฐ•์›๋„%"
order by factory_id

like๊ฐ€ ๊ฐ€์žฅ ํŽธํ•˜์ง€๋งŒ left, substr ์‚ฌ์šฉ๋ฒ•๋„ ์•Œ์•„๋‘๊ธฐ !

 

๊ฒฝ๊ธฐ๋„์— ์œ„์น˜ํ•œ ์‹ํ’ˆ์ฐฝ๊ณ  ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
select warehouse_id, warehouse_name, address, if(freezer_yn is null, 'N', freezer_yn)
from food_warehouse
where address like "๊ฒฝ๊ธฐ๋„%"
order by warehouse_id

 

๋‚˜์ด ์ •๋ณด๊ฐ€ ์—†๋Š” ํšŒ์› ์ˆ˜ ๊ตฌํ•˜๊ธฐ
select count(*)
from user_info
where age is null

 

์กฐ๊ฑด์— ๋งž๋Š” ํšŒ์›์ˆ˜ ๊ตฌํ•˜๊ธฐ
select count(*)
from user_info
where (age between 20 and 29) and (year(joined) = 2021)

 

๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ ๊ตฌํ•˜๊ธฐ
select max(price)
from product

 

12์„ธ ์ดํ•˜์ธ ์—ฌ์ž ํ™˜์ž ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
select pt_name, pt_no, gend_cd, age, if(tlno is null, 'NONE', tlno)
from patient
where age <= 12 and gend_cd = 'W'
order by age desc, pt_name

 

ํ‰๋ถ€์™ธ๊ณผ ๋˜๋Š” ์ผ๋ฐ˜์™ธ๊ณผ ์˜์‚ฌ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
select dr_name, dr_id, mcdp_cd, date_format(hire_ymd, "%Y-%m-%d")
from doctor
where mcdp_cd in ('CS', 'GS')
# where mcdp_cd = 'CS' or mcdp_cd = 'GS'
order by hire_ymd desc, dr_name

๋น„๊ต ์—ฐ์‚ฐ์ž์™€ in ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•  ๊ฒฝ์šฐ in์„ ์‚ฌ์šฉํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๊น”๋”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

 

์ธ๊ธฐ์žˆ๋Š” ์•„์ด์Šคํฌ๋ฆผ
select flavor
from first_half
order by total_order desc, shipment_id

 

๊ณผ์ผ๋กœ ๋งŒ๋“  ์•„์ด์Šคํฌ๋ฆผ ๊ณ ๋ฅด๊ธฐ
select fi.flavor
from first_half fi, icecream_info ic
where fi.flavor = ic.flavor and fi.total_order > 3000 and ic.ingredient_type = 'fruit_based'
order by total_order desc

 

์กฐ๊ฑด์— ๋งž๋Š” ๋„์„œ ๋ฆฌ์ŠคํŠธ ์ถœ๋ ฅํ•˜๊ธฐ
select book_id, date_format(published_date, "%Y-%m-%d")
from book
where year(published_date) = '2021' and category = '์ธ๋ฌธ'
order by published_date

 

ํ‰๊ท  ์ผ์ผ ๋Œ€์—ฌ ์š”๊ธˆ ๊ตฌํ•˜๊ธฐ
select round(avg(daily_fee))
from car_rental_company_car
where car_type = 'SUV'
# group by car_type
# having car_type = 'SUV'

group by ์ด์šฉ๋„ ๊ฐ€๋Šฅํ•˜๋‚˜, where๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๊ฐ„ํŽธํ•˜๋‹ค.

 

์ž๋™์ฐจ ๋Œ€์—ฌ ๊ธฐ๋ก์—์„œ ์žฅ๊ธฐ/๋‹จ๊ธฐ ๋Œ€์—ฌ ๊ตฌ๋ถ„ํ•˜๊ธฐ
select history_id, car_id, date_format(start_date, "%Y-%m-%d") as start_date, date_format(end_date, "%Y-%m-%d") as end_date, if(datediff(end_date, start_date)+1 >= 30, "์žฅ๊ธฐ ๋Œ€์—ฌ", "๋‹จ๊ธฐ ๋Œ€์—ฌ") as rent_type
from car_rental_company_rental_history
where date_format(start_date, "%Y-%m") = '2022-09'
order by history_id desc

 

ํŠน์ • ์˜ต์…˜์ด ํฌํ•จ๋œ ์ž๋™์ฐจ ๋ฆฌ์ŠคํŠธ ๊ตฌํ•˜๊ธฐ
select *
from car_rental_company_car
where options like "%๋„ค๋น„๊ฒŒ์ด์…˜%"
order by car_id desc

 

์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ์ค‘๊ณ ๊ฑฐ๋ž˜ ๋Œ“๊ธ€ ์กฐํšŒํ•˜๊ธฐ
select ugb.title, ugb.board_id, ugr.reply_id, ugr.writer_id, ugr.contents, date_format(ugr.created_date, '%Y-%m-%d')
from used_goods_board as ugb join used_goods_reply as ugr
on ugb.board_id = ugr.board_id
where date_format(ugb.created_date, '%Y-%m') = '2022-10'
order by ugr.created_date, ugb.title

๋Œ“๊ธ€