SQL 2์ฃผ์ฐจ ๊ฐ์~~
๊ฐ๋ณด์๊ณ ~~
2์ฃผ์ฐจ-1~2๊ฐ์
์ค๋ ๊ฐ์ ๋ด์ฉ์ ์ฐ์ฐํ๊ธฐ~~
food_orders ํ
์ด๋ธ ์ค์์,
food_preparation_time ๊ณผ delivery_time์ ๋ํ ๊ฐ์ ๊ตฌํด์ค.
๋ผ๋ ์๋ฏธ์ธ๋ฐ ์ด์ as ๋ก total_time ์ด๋ผ๋ ๋ณ๋ช
์ ๊ณ๋ค์ธ.
๋ํ๊ธฐ๋ฅผ ์ธ ์ ์์ผ๋ฉด ๋ญ๋ค????
๊ณฑํ๊ธฐ๋ ์ฌ์ฉ๊ฐ๋ฅ์ด๋ค.
์์
์ฒ๋ผ ํจ์๊ธฐ๋ฅ๋ ์ฌ์ฉํ ์ ์์.
select sum(food_preparation_time) total_food_preparation_time,
avg(delivey_time) avg_food_preparation_time
from food_orders ์์
sum(์ํ_์ค๋น_์๊ฐ์ ๋ชจ๋ ๋ํด์ค) ํฉ๊ณ_์ํ_์ค๋น_์๊ฐ(=๋ณ๋ช
์ ์ ํด์ฃผ๋ ๊ฒ.)
avg(๋ฐฐ๋ฌ_์๊ฐ ํ๊ท ์ ๋ด์ค) ํ๊ท _์ํ_์ค๋น_์๊ฐ(=๋ณ๋ช
)
๊ทผ๋ฐ ๋ฐฐ๋ฌ์๊ฐ ํ๊ท ๊ฐ์ธ๋ฐ ์ปฌ๋ผ๋ค์์ ์ ์ํ์ค๋น์๊ฐ์ผ๊น?,,๋๋ ๋ชฐ?๋ฃจ?
์ํผ,,,
์ฐ๋ฆฌ๋ ๋ฐ๋ก ์์ฉ์ ํด๋ณด๊ธฐ๋ก ํ์ด์.
๊ฐ์ฌ๋์ ๊ณ ๊ฐ๋ค ๋์ด ํ๊ท ์ ๊ตฌํ๋ฌ๋๋ฐ ๋๋ ๋์ด ์ดํฉ๋ ๊ตฌํด๋ฒ๋ ธ์ด์..
์ปฌ๋ผ๋ณ๋ช
์ง์ ์ํด์ฃผ๋ฉด ์ด๋ป๊ฒ ๋๋๊ณ ?
์ ์ด๋ ๊ฒ~
count๋ ๋ฐ์ดํฐ์ ๊ฐฏ์๋ฅผ ์ธ์ด์ฃผ๋ ๊ฒ.
count() ๊ดํธ ์์ ์ปฌ๋ผ ์ด๋ฆ์ ๋ฃ์ด์ค๋ ๋์ง๋ง,
๊ทธ๋ฅ ํ
์ด๋ธ ์์ ์๋ ๋ชจ๋ ๊ฐ์๋ฅผ ์ธ์ด์ค. ๋ผ๋ ์๋ฏธ์์ * , 1์ด๋ผ๊ณ
์ ์ด์ค๋ ๋๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ count(1) count_of_orders ๋ผ๋ ๊ฒ์,
food_orders ํ
์ด๋ธ ์์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ์ด์ค. ์ธ ๊ฒ.
๋ฐ์ ์๋ count(distinct customer_id) count_of_customers ๋ ํํ๊ฐ ์ข ๋ค๋ฅด๋ค.
distinct๊ฐ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ.(=์ง์ ํ ์ปฌ๋ผ์ด ๋ช๊ฐ์ ๋ฐ์ดํฐ๊ฐ์ ๊ฐ๊ณ ์๋์ง ๊ตฌํด์ฃผ๋ ๋ช
๋ น์ด)
์ฆ, customer_id์ ์ ์ฒด๊ฐฏ์๊ฐ ์๋, ๋์ฒด ๋ช ๊ฐ์ customer_id ๊ฐ ์๋์ง ๋ณด๊ณ ์ถ์ด. ๋ผ๋ ์๋ฏธ.
์ฝ๊ฒ ๋งํด, ์ฃผ๋ฌธ๊ฑด์ 10๊ฐ์ธ๋ฐ ์ฃผ๋ฌธ์๊ฐ 5๋ช
์.
๊ทธ๋ผ count(1)์ ํ์ ๋ ์ฃผ๋ฌธ๊ฑด 10๊ฐ๊ฐ ๋ค ๋จ๋๋ฐ, (distinct ๊ณ ๊ฐ๋ช
) ์ ํ๋ฉด
๋ช ๋ช
์ ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ๋์ง. ๊ฐ ๋๊ธฐ ๋๋ฌธ์ 5๋ช
์ ๊ฐ์ด ๋์ด.
์ด๋ฒ์ ํ์ด๋จผํธ ํ
์ด๋ธ์ ์ ์ฒด ๋ฐ์ดํฐ ๊ฐ์ ๊ตฌํด๋ณด์์ด์.
์ด 1716๊ฑด์ ๋ฐ์ดํฐ๊ฐ ์์์ ํ์ธํ ์ ์์.
๊ทธ๋ผ ์ด๋ฒ์ ํ์ดํ์
์ ๊ตฌํด๋ด
์๋ค.
ํ์ดํ์
์ ์นด๋์ ํ๊ธ๊ฒฐ์ ๋๊ฐ์ง ๊ฐ๋ง ๊ฐ๊ณ ์๊ธฐ ๋์
๊ฒฐ๊ณผ๊ฐ์ด 2๊ฐ๊ตฌ๋~~
min(=minimum์ ์ฝ์)์ ์ต์๊ฐ์ ๊ตฌํด์ฃผ๋ ํจ์์.
select min(price)
from food_orders ๋
food_orders ํ
์ด๋ธ ์์ price ์ปฌ๋ผ ๊ฐ๋ค ์ค,
๊ฐ์ฅ ์์ ๊ฐ์ ์๋ ค์ค~ ๋ผ๋ ์๋ฏธ.
max๋ ์ต๋๊ฐ์ ๊ตฌํด์ฃผ๋ ํจ์.
2์ฃผ์ฐจ-3๊ฐ์
์ค์ต
1. ์ฃผ๋ฌธ ๊ธ์ก์ด 30,000์ ์ด์์ธ ์ฃผ๋ฌธ๊ฑด์ ๊ฐฏ์ ๊ตฌํ๊ธฐ
์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์๋ price 30,000์ ์ด์(์กฐ๊ฑด)์ธ ์ฃผ๋ฌธ๊ฑด์ ๊ฐฏ์๋ฅผ
๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ count(distinct price) ํ๊ณ ์ปฌ๋ผ๋ช
์ง์ ์ ํด์คฌ์ต๋๋ค.
์กฐ๊ฑด '์ผ๋ง์ ์ด์' ์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝ๊ธฐ ์ํด
where๋ฌธ์ ์ฌ์ฉํ์ฌ
where price >= 30000 ์ ์
๋ ฅํจ.
๊ทธ๋ฌ๋?????? ํ๋ ค๋ฒ๋ฆผ. ๊ฐ์ฌ๋๊ณผ ๋ค๋ฅธ ์งํ๋ฐฉํฅ์ด์์~
๊ฐ๊ณผํ๊ฒ ์์๋คใ
ใ
๊ทธ๊ฒ์ ๋ฐ๋ก '์ฃผ๋ฌธ๊ฑด=quantity'
๋๋ ์กฐ๊ฑด 30000์์ ๊ฝํ์ ๊ฐ๊ฒฉ 30000์ ์ด์์ ๊ฐฏ์๋ฅผ ๊ตฌํด๋ฒ๋ฆฐ ๊ฒ์,,
๊ฐ ์ฐจ๋~ ๋ ๋ ๋ ๋~^^ใ
2. ํ๊ตญ ์์์ ์ฃผ๋ฌธ ๋น ํ๊ท ์์๊ฐ๊ฒฉ ๊ตฌํ๊ธฐ
๋คํ์ด๋ค. ์ด๋ฒ์ ๋ง์์ด์^^,,
์ ๋ฐ ์ฑ๊ธํ๊ฒ ์๊ฐํ์ง๋ง๊ธฐ~~~!!!
2์ฃผ์ฐจ-4๊ฐ์
select cuisine_type,
sum(price) sum_of_price
from food_orders ์์
sum(price) ํด์ฃผ๋ฉด ๊ฐ๊ฒฉ๋ค์ ๋ค ๋ํด์ค. ๋ผ๋ ์๋ฏธ์ด๊ณ ,
๊ทธ ์์ cuisine_type ์ด ๋ค์ด๊ฐ ์ด์ ๋,
์์์ข
๋ฅ๋ณ๋ก ๊ฐ(ํ๊ท ํน์ ํฉ๊ณ)์ ๊ตฌํ๊ณ ์ถ๋ค. ํ์ ๋,
์ด๋ ๊ฒ ๋ฒ์ฃผ๋ฅผ ์ฃผ๊ณ ์ถ์ ์ปฌ๋ผ์ ๋ช
๋ช
ํด์ฃผ๋ฉด ์ํ๋ ๋ฐ์ ๊ฐ์ด
์ง์ ํด์ค ์ปฌ๋ผ(=cuisine_type)์ ํฉ๊ณ๊ฐ์ด๋ ํ๊ท ๊ฐ์ ๊ตฌํ ์ ์์.
์ด๋ ๊ฒ๋ง ๋๋ด๋ฉด ์๋๊ณ SQL๋ฌธ์๋ ์ ์ฉ์ ํด์ค์ผ ํ๋๋ฐ,
๊ทธ๊ฒ ๋ฐ๋ก group by์ .
group by cuisine_type(=์ง์ ํด์ค ์ปฌ๋ผ๋ช
)
์ปฌ๋ผ๋ช
์ group by ์์ ๋๊ฐ์ด ์จ์ค์ผ ํ๋ค~
๋๋ฒ์งธ ์ค์ต์์ ๊ฐ ํ์ด๋จผํธ ํ
์ด๋ธ์์ ๊ฐ์ฅ ์ต๊ทผ ๊ฒฐ์ ์ผ์ ๊ตฌํ๋
๋ฌธ์ ์๋๋ฐ,, ๊ฐ์ฅ '์ต๊ทผ' ์ด๋ผ๋ ๋จ์ด์ ์๊ฐ ???? ํ๋ค๊ฐ,,,
์งฑ๊ตฌ๋ฅผ ๋๋ ค์ max๊ฐ ๊ฐ์ฅ ๋์ ์ต๋๊ฐ์ ๊ตฌํด์ฃผ๋ ํจ์๋๊น
๊ฐ์ฅ ์ต๊ทผ์ด๋ฉด ๋ ์ง๊ฐ ์ ค ๋์ง์๋! ๋ผ๋ ์๊ฐ์ผ๋ก,,,
select pay_type,
max(date) as max_date
from payments
group by pay_type ์ ์
๋ ฅํด์ฃผ์์๋๋ค,,,
๋จธ ๊ฐ์ฌ๋์ ์ปฌ๋ผ๋ค์์ recent_date ๋ผ๊ณ ์ค์ ํด์ฃผ์์ง๋ง
๊ฒฐ๊ณผ๊ฐ๋ง ๊ฐ๊ฒ ๋์ค๋ฉด ๋๋๊น์ ใ
ใ
,,,
+
์ค๋ ์๋ ํ์ด์ฌ ๊ฐ์๋ฅผ ์๊ฐํ๋ ค๊ณ ํ์ง๋ง
๋ชฉํ ๋ฐฉํฅ์ ํ์ด๋ฒ๋ ธ๋ค.
์ผ๋จ์ SQL ๊ฐ์ ๋จผ์ ๋ค ๋๋ด๋ฒ๋ฆฌ๊ธฐ!!!
SQL ๊ฐ์ ๋ค ๋๋ด์ ์ฌ์ ํ์คํธ ๋๋ด๋ฒ๋ฆฌ๊ณ ๋์
ํ์ด์ฌ ์๊ฐํ๊ณ ํ์คํธ ๋๋ธ๋ค.
์์์์!
'[๋ด๋ฐฐ์บ ] ์ฌ์ ์บ ํ (24.11.01 ~ 24.11.24)๐๐ปโโ๏ธ > SQL๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[241112] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 3์ฃผ์ฐจ-4~7 ๊ฐ์ ๋ฐ ์์ (4) | 2024.11.12 |
---|---|
[241111] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 3์ฃผ์ฐจ-1~3 ๊ฐ์ (1) | 2024.11.12 |
[241111] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 2์ฃผ์ฐจ-5~6 ๊ฐ์ ๋ฐ ์์ (1) | 2024.11.11 |
[241107] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 1์ฃผ์ฐจ-8 ๊ฐ์ ๋ฐ ์์ (0) | 2024.11.07 |
[241106] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 1์ฃผ์ฐจ 1~7 ๊ฐ์ (2) | 2024.11.06 |