๊ฐ๋ณด์๊ณ ^^
4์ฃผ์ฐจ-1๊ฐ์
์ ๋ฒ์๊ฐ์ ๋ฐฐ์ด ๊ฒ๋ค ๊ฐ๋จํ๊ฒ ๋ณต์ต~!
๋ฌธ์๋ณ๊ฒฝ
repalce : ์ง์ ํ ๋ฌธ์๋ฅผ ๋ค๋ฅธ ๋ฌธ์๋ก ๋ณ๊ฒฝ
substr : ํน์ ๋ฌธ์๋ง ์ถ์ถ
concat : ์ฌ๋ฌ๋ฌธ์๋ค์ ํฉ์ณ์ค
์กฐ๊ฑด๋ฌธ
if : if(์กฐ๊ฑด, ์กฐ๊ฑด์ ์ถฉ์กฑํ ๋์ ๊ฐ, ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํ ๊ฒฝ์ฐ์ ๊ฐ)
case when end :
case when ์กฐ๊ฑด1 then ๊ฐ(์์)1
when ์กฐ๊ฑด2 then ๊ฐ(์์)2
else ๊ฐ(์์)3 << else๋ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ฐ ์์ผ๋ฉด ์๋ต๊ฐ๋ฅ.
end
4์ฃผ์ฐจ-2๊ฐ์
์ค,,, ๋ญ๊ฐ ๋ ๋ฅํ ์ธ๊ณ์ ๋ค์ด์จ ๊ฒ ๊ฐ์์?
select column1, special_column
( /* subquery */
select column1, column2 special_column
from tabel1
) a ๋
๊ดํธ ์์ ์๋ ์์ ๋จผ์ ๊ณ์ฐํ ๋ค,
์์ ์๋ ์์ ํ๋ฒ ๋ ์ฌ์ฉํด์ค ์ ์๋ค.
๊ฐ๋จํด๋ณด์ด์ฅฌ?
์ด๊ฑด ในใ ๊ฐ๋จํ ์์,,,
์ข ๋ ์ค์ต์ ํด๋ณด์๋ฉด,,
selecet order_id, restaurant_name, if(over_time>=0, over_time, 0) over_time
from
(
select order_id, restaurant_name, food_preparation_time-25 over_time
from food_orders
) a
๋จผ์ ๊ดํธ ์์ ์๋ถํฐ ๊ณ์ฐ์ ํด๋ณด์๋ฉด,
์ํ ์ค๋น์๊ฐ์ด 25๋ถ ์ด๊ณผ๋ ์๊ฐ์ ๊ตฌํ๊ณ ์ ํจ์ธ๋ฐ,
25๋ถ์ผ๋ก๋ถํฐ ๋ช๋ถ์ด ์ด๊ณผ๋์ง๋ฅผ ๊ตฌํด์ผํด์,
food_preparation_time์์ 25๋ถ์ ๋นผ์ค.
๊ทธ ๊ฐ์ ๊ดํธ๋ก ๋ฌถ๊ณ ์๋ก ๋๊ณ ์์,
์ํ์ค๋น์๊ฐ-25 ํ ๊ฐ(=over_time)์ด 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ
over_time์ด๋ผ๊ณ ์ถ๋ ฅํ๊ณ , ์๋๊ฒฝ์ฐ๋ 0์ผ๋ก ์ถ๋ ฅํด๋ผ. ๋ผ๊ณ
if ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ฌถ์ด์ ํํํจ.
4์ฃผ์ฐจ-3,4๊ฐ์
์ค,,,, ๋ชจ๋ฅด๊ฒ ๋๋ฐ,,,ใ
์ด๋ฒ์ ๊ทธ๋ฅ ๊ฑฐ๋์ ๋ฏธํ๊ณ ๊ฐ์ฌ๋์ ๋ฆฌ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ด ๋๋ค.^^
ํ์ด๋ฅผ ํด๋ณด์๋ฉด,
์ผ๋จ ๋ง์ง๋ง ๊ตฌ๋ฌธ๋ถํฐ ๋ณด๋๋ก ํ๋ค.
select restaurant_name, avg(price/quantity) price_per_plate
from food_orders
group by 1 ์
์์์ ๋ณ๋ก ์ง๊ธ ๋จ๊ฐ์ ํ๊ท ์ ๊ตฌํ ๊ฒ์ด๋ผ ๋ณผ ์ ์๋ค.
(+ํด๋น ๊ตฌ๋ฌธ์ ๊ฒฐ๊ณผ๋ง ํ์ธํ๊ณ ์ถ์ ๋ ๋๋๊ทธ ํด์ ์คํ์ํค๋ฉด
ํด๋น ๊ตฌ๋ฌธ์ ๊ฒฐ๊ณผ๋ง ํ์ธํ ์ ์์.)
๋ฐ์ ๊ตฌ๋ฌธ์์ ์ถ๋ ฅํ price_per_plate ๊ฐ์ ์์ ๊ฐ์ง๊ณ ์ฌ๋ผ๊ฐ์
case when ๊ตฌ๋ฌธ์ ๋ฃ์ด์ ํ์ฉํ ๊ฒ์ ๋ณผ ์ ์์.
์ฆ, ๊ดํธ(a) ์์์์ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ ๊ดํธ(b) ๋ฐ์์ ์ฌ์ฉํด์ค ๊ฒ.
๊ทธ๋ฆฌ๊ณ , ๊ดํธ(a, b)์ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ ๋งจ์๊ตฌ๋ฌธ์์ ํ์ฉํด์ฃผ์๋ค.
๋๋ฒ์งธ ์ค์ต ๊ฒฐ๊ณผ๋ฌธ ์ฒ์ฐธใ ใ ใ
๋ ์ฌ์ค ์ธ๊ทธ๋ฉํ ์ด์ ๋ฅผ ๋ฌด์จ ๊ธฐ์ค์ผ๋ก ์ธ์์ผ ํ๋์ง๋ ๋ชฐ๋๋ค,,
์กฐ๊ฑด์ผ๋ก ๋์์๋ ๊ฒ๋ ์์์ด์^ใ ^,,,
์กฐ๊ฑด์ผ๋ก ๋์์ด๋ ํ๋ ธ์ ๊ฒ ๊ฐ์์? ใ
์ ์ด๋ฒ์ ์ข ๋ฌธ์ ๋ฅผ ์ฐจ๋ถํ๊ฒ ์ฝ๊ณ ์
๊ทธ๋๋ง ๊ทผ์ ํ๊ฒ ๋ค๊ฐ๊ฐ๋๋ฐ ์ฌ์ค ์ค๊ฐ ์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์
๋ํด์ ์๋ชป ์ดํด๋ฅผ ํ๊ณ ์์์ด์ ๊ฒฐ๊ตญ ํ๋ ค๋ฒ๋ ธ์ด์.
rating ์ปฌ๋ผ์ ๋ฌ๊ธ์์ด ์ํํ ์ด์ ๋,
๋๋ ์์์ ์๋ผ๊ณ ํด์ ์ ์ํ๊ฐ ๋ผ๊ณ ์๊ฐํด์
rating ์ปฌ๋ผ์ ํ์ฉํ ๊ฒ์ธ๋ฐ,
๊ฑ ๋์ด์ฐ๊ธฐ ์๋ ์์์ ์ ์๋ ๊ฒ์;;;;
ใ ใ ์ํผ ํ๋ ธ์ง๋ง ์ ์๋ฏธํ๋ค.
์์จ;;;;;;;;
๋๋์ด ์ ๋ต ๋ง์ถฐ๋ฒ์ใ ใ ใ
๊ฐ๊ฒฉ์ ๋๋ค ์ง์ง,,, ์ด์ ์ง์ง ์ ๋๋ก ์ดํดํ๋ค๋๊ฑฐ์ง,,
select restaurant_name,
sum(quantity) total_quant,
sum(price) total_price
from food_orders
group by 1 ์ผ๋ก 1์ฐจ ๊ฐ์ ๊ตฌํด์ค๋๋ค.
๊ตฌํด์ค ๊ฐ์ ์ด์ ์ฒซ๋ฒ์งธ selcet๋ฌธ์ ์กฐ๊ฑด์ผ๋ก ์จ์ฃผ๋ฉด ๋๋๋ฐ,
์ฃผ๋ฌธ๊ฑด ์๋ 5๊ฐ ์ดํ์ผ ๋ 10%,
์๋ 15๊ฐ ์ด๊ณผ, ์ด ์ฃผ๋ฌธ๊ธ์ก 30๋ง์ ์ด์์ผ ๋ 0.5% ๊ฐ
์กฐ๊ฑด์ด์์ผ๋๊น ์ด๊ฑธ
case when ์กฐ๊ฑด๋ฌธ์ผ๋ก ์ฎ์ด์ค๊ฑฐ๊ณ ,
case when ์กฐ๊ฑด์ ์๋๊ฐ ๋ฐ์ค์์ ๊ตฌํด์ค ๊ฐ์ผ๋ก total_quant๋ฅผ
์ง์ด๋ฃ์ด์ค๋๋ค.
case when total_quant<=5 then 0.1
when total_quant>15 and total_price>=300000 then 0.005
else 0.001 end discout
ํด์ฃผ๋ฉด ์์ ๊ฒฐ๊ณผ์ ๋์ผํ๊ฒ ์คํ๋จ!!!!
์ง์ง ๊ฐ๊ฒฉ์ด๋ค,,, ์ง๊ธ 4์ฃผ์ฐจ ๊ณ์ ์คํจ๋ง ํ๋ค๊ฐ
์ฒซ์ฑ๊ณต์ด์ผ,,,
์ด๋๋ก ์ญ์ญ ๋ ๋ถ๋ฐํด๋ณด์๊ณ ,,,
+
๋ฌธ์ ๋ฅผ ์ฐจ๋ถํ๊ฒ ์ฝ๊ณ ์
๋ฌธ์ ์์ ์ง์ง ๊ตฌํ๊ณ ์ ํ๋๊ฒ ๋ฌด์์ด๊ณ ,
๋ซ์ ๋์๊ฑด ์ด๋ค๊ฑด์ง ์ ๋๋ก ๊ตฌ๋ถํ์
'[๋ด๋ฐฐ์บ ] ์ฌ์ ์บ ํ (24.11.01 ~ 24.11.24) ๐๐ปโโ๏ธ > SQL ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[241114] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 4์ฃผ-5~7 ๊ฐ์ (4) | 2024.11.14 |
---|---|
[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 |
[241108] ์์ ๋ณด๋ค ์ฝ๊ณ ๋น ๋ฅธ SQL 2์ฃผ์ฐจ-1~4 ๊ฐ์ (2) | 2024.11.08 |