header-img
Info :
๋ฐ€๋„
denseยน
์žฅ๋ž˜ํฌ๋ง : ๋‹จ์œ„ ๋ถ€ํ”ผ ๋‹น ์งˆ๋Ÿ‰์ด ๋ณด๋‹ค ๋นฝ๋นฝํ•œ ์‚ฌ๋žŒ ๋˜๊ธฐ

 

 

 

<๋ฐ์ดํ„ฐ ์ฒดํฌ>

<

๋ฌธ์ œ ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„ ๊ฐ€์žฅ ๋น„์‹ผ ์‹ํ’ˆ์˜ ์ •๋ณด ์กฐํšŒํ•˜๊ธฐ

ํ…Œ์ด๋ธ”๋ช…: food_product์–ด๋А ๋Œ€ํ˜•๋งˆํŠธ์˜ ์‹ํ’ˆ ์ •๋ณด ํ…Œ์ด๋ธ” ๊ฒฌ๋ณธ 

์ปฌ๋Ÿผ๋ช…: product_id์ œํ’ˆ์‹๋ณ„์ฝ”๋“œ, product_name์ œํ’ˆ๋ช…, product_cd์‹ํ’ˆ์ฝ”๋“œ, category์นดํ…Œ๊ณ ๋ฆฌ๋ช…, price๊ฐ€๊ฒฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์„ฑ: 1๊ฐœ ํ…Œ์ด๋ธ”, 5๊ฐœ ์ปฌ๋Ÿผ, 40๊ฐœ ๋กœ์šฐ

>

 

 

 

 

<์‹œ๋‚˜๋ฆฌ์˜ค>

 

๋‹น์‹ ์€ A์‹ํ’ˆ ์˜์—…ํŒ€ ๋‹ด๋‹น์ž๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์ •๋Ÿ‰์ ์œผ๋กœ ์ œํ’ˆ๋ณ„ ํŒ๋งค ์„ฑ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ ์ž ๋งˆํŠธ ์ „์‚ฐ ๊ธฐ์žฌ๋œ ์ž์‚ฌ ์ƒํ’ˆ ๊ธฐ๋ฐ˜์œผ๋กœ EDAํƒ์ƒ‰์  ๋ฐ์ดํ„ฐ ๋ถ„์„๋ฅผ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. food_product ํ…Œ์ด๋ธ”์—์„œ ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๊ฐ€์žฅ ๋น„์‹ธ๊ฑฐ๋‚˜ ์‹ผ '๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ '์˜ category, price, product_name์„ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ์ฟผ๋ฆฌ๋ฅผ ์งœ์•ผ ํ• ๊นŒ?

 

 

 

 

 

<ํ’€์ด>

 

'์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„' ์ด๋ผ ํ–ˆ์œผ๋‹ˆ ์ƒํ’ˆ์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด์•ผ ํ•œ๋‹ค. ๋˜, GROUP BY์™€ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์ค‘์—๋Š” ์œˆ๋„์šฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์™œ๋ƒ๋ฉด ์—ฐ์‚ฐ๋œ ๊ฒฐ๊ณผ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์—ฐ์‚ฐ์— ๋งž๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋กœ์šฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ข€ ๋” ๊นŠ์ด ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์œˆ๋„์šฐ ํ•จ์ˆ˜Window Function VS GROUP BY ํฌ์ŠคํŠธ๋ฅผ ์ฝ์œผ๋ฉด ๋œ๋‹ค.

 

WHERE์ ˆ์ด ๊ธธ์–ด์ง€๊ฒ ๋‹ค. 1) '๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ' category์˜ ์ƒํ’ˆ ์ค‘์— 2) ์‹ํ’ˆ๋ถ„๋ฅ˜๋ณ„๋กœ ๊ฐ€๊ฒฉ์ด ๊ฐ€์žฅ ๋น„์‹ธ๊ฑฐ๋‚˜/ ์‹ผ ์ƒํ’ˆ๋งŒ ๊ณจ๋ผ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ. ์ด๋ฅผ ๋ฐ˜์˜ํ•ด WHERE์ ˆ์„ ์“ฐ๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ด๋ฅผ ๋ณด๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ IN ๋’ค์— ์กฐ๊ฑด์ ˆ๋กœ ๋„ฃ์–ด ์คฌ๋Š”๋ฐ, ์ด์— ๋Œ€ํ•ด ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ๋‹ค์ค‘ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ด€๋ จํ•ด ์ฐพ์•„๋ณด๋ฉด ๋œ๋‹ค.

 

WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MAX(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MIN(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ์‹ผ ์ƒํ’ˆ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜

 

๋˜ํ•œ ์ „๋ฌธ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 

 

SELECT category
        , price
        , product_name
FROM food_product
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MAX(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ๋“ค๋งŒ ์ถœ๋ ฅ
ORDER BY price DESC

 

 

SELECT category
        , price
        , product_name
FROM food_product
WHERE category IN('๊ณผ์ž', '๊ตญ', '๊น€์น˜', '์‹์šฉ์œ ')
        AND price IN (SELECT MIN(price) OVER (PARTITION BY category) FROM food_product)
        -- ๊ฐ€์žฅ ์‹ผ ์ƒํ’ˆ๋“ค๋งŒ ์ถœ๋ ฅ
ORDER BY price DESC

 

 

 

 

 

๋”๋ณด๊ธฐ
TOOLS/SQL