์˜ค๋‹ต๋…ธํŠธ

[70๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] 

[์™œ ํ‹€๋ ธ๋‚˜?] USING๊ฐœ๋… ์ˆ™์ง€ ๋ถ€์กฑ

 

 

[72๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] WHERE์ ˆ์— A.๊ณ ๊ฐ๋ฒˆํ˜ธ IN (11000, 12000)์ด ๋“ค์–ด๊ฐ”์œผ๋ฉด 2๋ฒˆ์ด ์ •๋‹ต์ด์ง€๋งŒ ON์ ˆ์— ๋“ค์–ด๊ฐ”์œผ๋ฏ€๋กœ ๋ชจ๋“  ๊ณ ๊ฐ์— ๋Œ€ํ•ด ์ถœ๋ ฅํ•˜๋˜, JOIN๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋Š” ๊ณ ๊ฐ๋ฒˆํ˜ธ 11000, 12000์— ํ•œ์ •๋œ๋‹ค. 

[์™œ ํ‹€๋ ธ๋‚˜?] JOIN์กฐ๊ฑด์ ˆ WHERE, ON์˜ ๊ฐœ๋… ํ—ท๊ฐˆ๋ฆผ

 

 

[73๋ฒˆ] ์ •๋‹ต โ‘ฃ / ๋‚ด ์ •๋‹ต โ‘ 

[ํ•ด์„ค] ๋ชจ๋‘ FULL OUTER JOIN ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค 

[์™œ ํ‹€๋ ธ๋‚˜?] (1), (2)์˜ ํ˜•ํƒœ ํŒŒ์•…์€ ์™„๋ฃŒํ–ˆ์œผ๋‚˜ (3)์—์„œ NOT EXISTS์™€ UNION ALL ์—ฐ์‚ฐ์„ ํ—ท๊ฐˆ๋ฆผ, 

 

 

[79๋ฒˆ] ์ •๋‹ต โ‘ฃ / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] EXCEPT๋Š” ์ฐจ์ง‘ํ•ฉ ์—ฐ์‚ฐ. NOT IN ๋˜๋Š” EXISTST๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ์•„๋ž˜์˜ ๊ฒฐ๊ณผ๊ฐ’์€ TAB1์—๋งŒ ์žˆ๋Š” ๊ฐ’.

[์™œ ํ‹€๋ ธ๋‚˜?]

 

 

[80๋ฒˆ] ์ •๋‹ต โ‘ก / ๋‚ด ์ •๋‹ต โ‘ข

[ํ•ด์„ค] ์ˆ˜ํ–‰ SQL์€ ์ด์šฉ๋œ ์ ์ด ์žˆ์—ˆ๋˜ ์„œ๋น„์Šค๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] ์ˆ˜ํ–‰ SQL์˜ ํ•ด์„์„ ์ž˜๋ชปํ•จ. 3๋ฒˆ์€ ์ด์šฉ๋œ ์  ์—†๋Š” ์„œ๋น„์Šค๋งŒ ์ถœ๋ ฅ

 

 

[82๋ฒˆ] ์ •๋‹ต โ‘ก / ๋‚ด ์ •๋‹ต โ‘ 

[ํ•ด์„ค] UNION ALL์„ ์‚ฌ์šฉํ•˜๋ฉด ์นผ๋Ÿผ ๋ณ„์นญ์€ ์ฒซ๋ฒˆ์งธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ‘œ์‹œ๋˜๊ณ , ORDER BY๋Š” ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ ์ตœ์ข… ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ์ •๋ ฌ๋œ๋‹ค. ORDER BY 1,2 = ENAME์— ASC, JOB์— DESC๊ฐ€ ์ ์šฉ๋œ๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] ORDER BY = 1, 2ํ•ด์„์„ ์ œ๋Œ€๋กœ ๋ชปํ–ˆ์Œ.

 

 

[89๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] SQL๋ฌธ์€ ํ™๊ธธ๋™๊ณผ ์ด๋ณ‘ํ—Œ์„ ๋งค๋‹ˆ์ €(๋ถ€๋ชจ)๋กœ, ๋‚˜๋จธ์ง€๋ฅผ ์ง์›(์ž์‹)์œผ๋กœ ๋‘” ๊ณ„์ธต ์ฟผ๋ฆฌ์ด๋‹ค. BETWEEN๋กœ ์ž…์‚ฌ ์ผ์ž๊ฐ€ ํ•„ํ„ฐ๋ง ๋œ ๊ฒƒ์€ ์ง์›๋“ค๋ฟ์ด๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] CONNECT BY์ ˆ๊ณผ WHERE์ ˆ์˜ BETWEEN~AND ๊ตฌ๋ฌธ์€ ๋‹ค๋ฅด๋‹ค.

 

 

[90๋ฒˆ] ์ •๋‹ต / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] 

[์™œ ํ‹€๋ ธ๋‚˜?] 

 

 

[91๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต โ‘ฃ

[ํ•ด์„ค] LVL(Level)์ด 1์ธ ์ผ๋ณธ์ง€์‚ฌ์˜ ๋ถ€์„œ์ฝ”๋“œ 120์ด ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ์˜ ์‹œ์ž‘์ ์ด๋ฏ€๋กœ โ‘  or โ‘ฃ๋กœ ์ถ”๋ฆด ์ˆ˜ ์žˆ๋‹ค. โ‘ฃ๋ฒˆ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์ผ๋ณธ์ง€์‚ฌ(๋ถ€์„œ์ฝ”๋“œ 120)๋ฅผ ์‹œ์ž‘์œผ๋กœ ์—ญ๋ฐฉํ–ฅ ์ „๊ฐœํ•˜์—ฌ ์ƒ์œ„๋ถ€์„œ์ฝ”๋“œ๊ฐ€ NULL์ธ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๊นŒ์ง€๋ฅผ ์ถ”์ถœํ–ˆ๋‹ค. ์ผ๋ณธ์ง€์‚ฌ(120)๊ณผ ์•„์‹œ์•„์ง€๋ถ€(100)์„ ์‹œ์ž‘์ ์œผ๋กœ ์‚ผ์•„ ๋‹ค์‹œ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ „๊ฐœํ•˜๋ฉฐ ํ•˜์œ„ ๋ชจ๋“  ๋ถ€์„œ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์žˆ๋‹ค. ์ด ์นผ๋Ÿผ์„ A๋กœ ์‚ผ๊ณ  LEFT JOINํ–ˆ์„ ๋•Œ, [๊ฒฐ๊ณผ]๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”์ถœ๋œ๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] Level1 ์ตœ์ƒ์œ„ ๋…ธ๋“œ ์ถ”๋ ค๋‚ด๊ธฐ๊นŒ์ง€๋Š” ์ž˜ ํ–ˆ์œผ๋‚˜, ์ดํ›„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฌธ์˜ ์—ญ๋ฐฉํ–ฅ ์ „๊ฐœ -> CONNECT BY์ ˆ ์ˆœ๋ฐฉํ–ฅ ํ•ด์„์ด ๋ฏธํก. CONNECT BY ์ƒ์œ„๋ถ€์„œ์ฝ”๋“œ(๋ถ€๋ชจ) = PRIOR (์ž์‹)์ผ ๋•Œ ์ˆœ๋ฐฉํ–ฅ์œผ๋กœ ์ „๊ฐœ.

 

 

[95๋ฒˆ] ์ •๋‹ต โ‘ก / ๋‚ด ์ •๋‹ต โ‘ฃ

[ํ•ด์„ค]

๊ฐ€) ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผ ํ–‰, ๋˜๋Š” ๋ณต์ˆ˜ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜) [์ฐธ๊ณ ] GROPU BY์ ˆ์—๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋‹ค. SELECT / FROM / WHERE / HAVING / ORDER BY / INSERT VALUES / UPDATE SET์ ˆ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค) ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ '=', '>'๋“ฑ์˜ ์—ฐ์‚ฐ์ž์™€ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

[์ฐธ๊ณ ] ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ๋Š” IN, ALL, ANY, SOME, EXISTS๋ฅผ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ

๋ผ) ์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ : ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฉ”์ธ์ฟผ๋ฆฌ ์นผ๋Ÿผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

[์ฐธ๊ณ ] ๋น„์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ : ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฉ”์ธ์ฟผ๋ฆฌ ์ปฌ๋Ÿผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์€ ํ˜•ํƒœ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์ด๋‹ค. ๋ฉ”์ธ์ฟผ๋ฆฌ์— ๊ฐ’(์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ)์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ

๋งˆ) Oracle์€ ๋‹ค์ค‘ ์นผ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, SQL Server๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] ์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ ๊ฐœ๋… ์ˆ™์ง€ ๋ถ€์กฑ, ๋‹ค์ค‘ ์นผ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ง€์› ํ”„๋กœ๊ทธ๋žจ ์ˆ™์ง€ ๋ถ€์กฑ

 

 

[97๋ฒˆ] ์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ฃ

[ํ•ด์„ค] โ‘ข ๋™์˜์—ฌ๋ถ€์— 'N'์ด ์žˆ์œผ๋ฉด ํšŒ์›ํ…Œ์ด๋ธ”์—์„œ ๋ชจ๋‘ ์ถ”์ถœํ•œ๋‹ค. ์—ฐ๊ด€ ์„œ๋ธŒ์นผ๋Ÿผ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋™์ผ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] [SQL]ํ•ด์„์˜ ์‹ค์ˆ˜. HAVING์ ˆ >= 1 ํ•ด์„ ์‹ค์ˆ˜. 1 ์ด์ƒ์ด ์•„๋‹ˆ๋ผ 1๊ฐœ ์ด์ƒ์„ ์ฐพ์•„๋‚ด๋Š” ์กฐ๊ฑด์ด๋ฏ€๋กœ ๊ฒฐ๊ตญ ๋™์˜ํ•˜์ง€ ์•Š์€ ํšŒ์›์„ ์ฐพ์•„๋‚ด๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด๋‹ค.

 

 

[99๋ฒˆ] ์ •๋‹ต โ‘ก / ๋‚ด ์ •๋‹ต โ‘ 

[ํ•ด์„ค] โ‘ก ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ ๋น„๊ต ์—ฐ์‚ฐ์ž(IN, ALL ๋“ฑ)์€ ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. (๋‹จ, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” ๋ถˆ๊ฐ€๋Šฅ)

โ‘ข ๋น„ ์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ : ๋ฉ”์ธ ์ฟผ๋ฆฌ์— ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ 

์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ : ๋ฉ”์ธ์ฟผ๋ฆฌ๊ฐ€ ๋จผ์ € ์ˆ˜ํ–‰๋˜์–ด ์ฝํ˜€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์กฐ๊ฑด์ด ๋งž๋Š”์ง€ ํ™•์ธ

โ‘ฃ ๋ฉ”์ธ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์™€ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋Š” ์ƒํ˜ธ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹คํ–‰์ˆœ์„œ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] ์„œ๋ธŒ์ฟผ๋ฆฌ ์—ฐ์‚ฐ์ž ๊ฐœ๋… ์ˆ™์ง€ ๋ถ€์กฑ 

 

 

[105๋ฒˆ] ์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ฃ

[ํ•ด์„ค] ROLL UP(ID, ์ผ์ž) = (ID, ์ผ์ž), (ID๋ฌถ์Œ), (์ „์ฒด๋ฌถ์Œ=์ด๊ณ„)๊ฐ€ ๊ตฌํ•ด์ง

โ‘  ์„œ๋น„์ŠคA LEFT OUTER JOINํ–ˆ์œผ๋ฏ€๋กœ ์„œ๋น„์ŠคID๊ฐ€ 001~004 ์ถœ๋ ฅ๋˜์–ด์•ผํ•จ

โ‘ก ์„œ๋น„์ŠคID 004๋ˆ„๋ฝ, ์„œ๋น„์ŠคID๋ณ„ ์†Œ๊ณ„ ๋ˆ„๋ฝ

โ‘ฃ ์„œ๋น„์ŠคID๋ณ„ ์†Œ๊ณ„๊ฐ€ ์—†์Œ

[์™œ ํ‹€๋ ธ๋‚˜?] ROLL UPํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ง€์‹ ๋ถ€์กฑ, JOIN์œผ๋กœ ์ธํ•œ NULL๊ฐ’ ํŒŒ์•… ๋ฏธํก

 

 

[106๋ฒˆ] ์ •๋‹ต โ‘ก / ๋‚ด ์ •๋‹ต โ‘ข

[ํ•ด์„ค] ๋ณธ๋ฌธ์˜ [ํ‘œ]๋Š” ROLL UP(์ง€์—ญ๋ช…, ์ด์šฉ์›”)๋กœ (์ง€์—ญ๋ช…, ์ด์šฉ์›”), (์ง€์—ญ๋ช… ๋ฌถ์Œ), (์ „์ฒด๋ฌถ์Œ=์ด๊ณ„)๋กœ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด๋‹ค.

โ‘  CASE๋ฌธ ์กฐ๊ฑด ํ‘œํ˜„ ์ž˜๋ชป๋จ

โ‘ข GROUP BY CUBE์ ˆ์ž„

โ‘ฃ GROUPING SETS์ ˆ์ž„ : ((B.์ง€์—ญ๋ช…, TO_CHAR(A.์ด์šฉ์ผ์‹œ, 'YYYY.MM)), (B.์ง€์—ญ๋ช…), ()) ์œผ๋กœ ๋ช…์‹œํ•ด์ฃผ์—ˆ์œผ๋ฉด ์ •๋‹ต

[์™œ ํ‹€๋ ธ๋‚˜?] (CASE GROUPING(B.์ง€์—ญ๋ช…) WHEN 0 THEN '์ง€์—ญ์ „์ฒด' ELSE B.์ง€์—ญ๋ช… END) ํ•ด์„ ์‹ค์ˆ˜.

๋‘ ํ…Œ์ด๋ธ”์˜ ๊ต์ง‘ํ•ฉ์ธ ์ง€์—ญID๋ฅผ ๋ฌถ์–ด์•ผํ•˜๊ณ , ์ง€์—ญID๋กœ ์†Œ๊ณ„๊ฐ€ ๋˜๋ฉด(=1) '์ง€์—ญ์ „์ฒด'๋กœ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

* GROUPINGํ•จ์ˆ˜ : ์—ด ์‹์ด ์ง‘๊ณ„๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€. ์†Œ๊ณ„๋‚˜ ํ•ฉ๊ณ„๊ฐ€ ๊ณ„์‚ฐ์ด ๋˜๋ฉด 1, ์•„๋‹ˆ๋ฉด 0 ๋ฐ˜ํ™˜

* CASE์ ˆ MIN(B.์ง€์—ญ๋ช…)์˜ ์˜๋ฏธ : GROUPY BY๋ฅผ ์“ฐ๋ฉด SELECT์ ˆ์— 

 

 

 

[109๋ฒˆ] ์ •๋‹ต โ‘ก, โ‘ข / ๋‚ด ์ •๋‹ต โ‘ข

[ํ•ด์„ค] ๋ฌธ์ œ์˜ [๊ฒฐ๊ณผ]๋Š” (์„ค๋น„ID, ์—๋„ˆ์ง€์ฝ”๋“œ), (์„ค๋น„ID), (์—๋„ˆ์ง€์ฝ”๋“œ), (์ „์ฒด๋ฌถ์Œ)์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

โ‘  CUBE๋ฌธ์ด ์ž˜๋ชป๋จ. CUBE(A.์„ค๋น„ID, B.์—๋„ˆ์ง€์ฝ”๋“œ)๊ฐ€ ๋˜๋ฉด ์ •๋‹ต์ด ๋  ์ˆ˜ ์žˆ์Œ

โ‘ฃ GROUPING SETS์—์„œ ()๊ฐ€ ๋น ์กŒ์Œ. *() : ์•„๋ฌด ๊ธฐ์ค€ ์—†์ด ์ „์ฒด์— ๋Œ€ํ•œ ์‚ฌ์šฉ๋Ÿ‰์„ ์ง‘๊ณ„

[์™œ ํ‹€๋ ธ๋‚˜?] ๋ณธ๋ฌธ์˜ ํ‘œ ํ•ด์„ ๋ฏธํก

 

 

[115๋ฒˆ] ์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ข

[ํ•ด์„] ์ถ”์ฒœ๊ฒฝ๋กœ ๋ณ„๋กœ ๊ตฌ๋ถ„๋œ ๊ฒƒ์„ -> ORDER BYํ•˜๊ณ  -> ์ถ”์ฒœ์ ์ˆ˜๊ฐ€ ๋†’์€ ๊ฒƒ ์ˆœ์œผ๋กœ ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์ง.

SNS 80  1
SNS 75 2
์ด๋ฒคํŠธ์‘๋ชจ 88 1
์ด๋ฒคํŠธ์‘๋ชจ 78 2
ํ™ˆํŽ˜์ด์ง€ 93 1
ํ™ˆํŽ˜์ด์ง€ 98 2

์ด๋ ‡๊ฒŒ ์ถ”์ถœ๋œ ๊ฒƒ์„ INLINE VIEW๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ SELECTํ•˜๊ณ , WHERE RNUM = 1์— ์˜ํ•ด ๊ฒฝ๋กœ๋ณ„๋กœ ์ˆœ๋ฒˆ์ด 1์ธ ๊ฒƒ๋งŒ ์ถ”์ถœ.[์™œ ํ‹€๋ ธ๋‚˜?] PARTITION BY๋ณ„๋กœ ROW_NUMBER๋งค๊ธฐ๋Š” ๊ฒƒ์„ ๋ชจ๋ฅด๊ณ , ์ „์ฒด ํ…Œ์ด๋ธ” ๋Œ€์ƒ์œผ๋กœ ์ˆœ์œ„ ๋งค๊น€.

 

 

 

[116๋ฒˆ] 

์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ 

[ํ•ด์„ค] WINDOWํ•จ์ˆ˜๋Š” GROUP BY์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

WINDOW ํ•จ์ˆ˜์˜ ORDER BY์ ˆ์— ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

RANGE BETWEEN 10000 PRECEDING AND 10000 FOLLOWING์€ -10000~10000์‚ฌ์ด์˜ ์ƒํ’ˆ๋ถ„๋ฅ˜์ฝ”๋“œ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] GROUP BY ํ•จ์ˆ˜์— ๋Œ€ํ•œ ๊ทœ์น™ ์ˆ™์ง€ ๋ฏธํก

ROWS : ๋ฌผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ •
RANGE : ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ์˜ํ•ด ํ–‰ ์ง‘ํ•ฉ์„ ์ง€์ •

BETWEEN ~ AND : ์œˆ๋„์šฐ์˜ ์‹œ์ž‘๊ณผ ๋ ์œ„์น˜๋ฅผ ์ง€์ •

UNBOUNDED PRECEDING : ์œˆ๋„์šฐ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋กœ์šฐ์ž„์„ ์˜๋ฏธ
UNBOUNDED FOLLOWING : ์œˆ๋„์šฐ ๋งˆ์ง€๋ง‰ ์œ„์น˜๊ฐ€ ๋งˆ์ง€๋ง‰ ๋กœ์šฐ์ž„์„ ์˜๋ฏธ
-> PARTITION BY๊ฐ’, GROUPING๊ฐ’์„ ๊ณ ๋ คํ•ด์•ผํ•จ

[ROW์ˆ˜] PRECEDING : ์œˆ๋„์šฐ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ROW์ˆ˜๋งŒํผ ์ด์ „์ด ์‹œ์ž‘ ๋กœ์šฐ์ž„์„ ์˜๋ฏธ
[ROW์ˆ˜] FOLLOWING : ์œˆ๋„์šฐ ๋งˆ์ง€๋ง‰ ์œ„์น˜๊ฐ€ ROW์ˆ˜๋งŒํผ ๋‹ค์Œ์ด ๋งˆ์ง€๋ง‰ ๋กœ์šฐ์ž„์„ ์˜๋ฏธ

CURRENT ROW : ํ˜„์žฌ ๋กœ์šฐ๊นŒ์ง€๋ฅผ ์˜๋ฏธ

 

 

[117๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต - 

[ํ•ด์„ค] ๋ถ€์„œ ๋ณ„ ์ตœ๊ณ  ์—ฐ๋ด‰์ž๋ฅผ ๊ตฌํ•˜๋Š” SQL๋ฌธ

[์™œ ํ‹€๋ ธ๋‚˜?] ๋ฌธ์ œ ์ดํ•ด, ํ•ด์„ ๋ฏธํก

 

 

 

[118๋ฒˆ] ์ •๋‹ต โ‘  / ๋‚ด ์ •๋‹ต -

[ํ•ด์„ค] END_VAL์ด NULL์ด๋ฏ€๋กœ 99๊ฐ€ ๋จ

 

START_VAL = LAG(END_VAL), LEAD(START_VAL)์„ ์ฐพ์•„๋ณด๋ฉด

ID START_VAL END_VAL LAG LEAD
A 10 14 NULL 14
A 14 15 14 15
A 15 15 15 15
A 15 18 16 20
A 20 25 18 25
A 25 99 25 NULL

 

CASE๊ตฌ๋ฌธ๊ณผ LAG๊ตฌ๋ฌธ๊ฐ’์ด ๊ฐ™์œผ๋ฉด 1, ๋‹ค๋ฅด๋ฉด 0์„ ์ถœ๋ ฅ -> FLAG1

CASE๊ตฌ๋ฌธ๊ณผ LEAD๊ตฌ๋ฌธ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด 1, ๋‹ค๋ฅด๋ฉด 0์„ ์ถœ๋ ฅ -> FLAG2

ID START_VAL END_VAL LAG LEAD FLAG1 FLAG2
A 10 14 NULL 14 0 1
A 14 15 14 15 1 1
A 15 15 15 15 1 1
A 15 18 16 20 1 0
A 20 25 18 25 0 1
A 25 99 25 NULL 1 0

 

WHERE์ ˆ์—์„œ FALG1์ด 0 ๋˜๋Š” FALG2๊ฐ€ 0์ธ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์•ผํ•˜๋ฏ€๋กœ ์ •๋‹ต์€ 1๋ฒˆ

[์™œ ํ‹€๋ ธ๋‚˜?] LAG, LEADํ•จ์ˆ˜ ์ˆ™์ง€ ๋ฏธํก

LAG ํ•จ์ˆ˜ OVER : ๋ฐ”๋กœ ์ด์ „ ํ–‰์˜ ๊ฐ’์„ ๋ฆฌํ„ด

LEAD ํ•จ์ˆ˜ OVER : ๋ฐ”๋กœ ๋‹ค์Œ ํ–‰์˜ ๊ฐ’์„ ๋ฆฌํ„ด

* Oracle์—์„œ๋งŒ ์ง€์›

 

 

 

[123๋ฒˆ] ์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ 

[ํ•ด์„ค] PL/SQL์€ ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ผ๋ฐ˜ SQL์„ ์‹คํ–‰ํ•  ๋•Œ, WHERE์ ˆ์˜ ์กฐ๊ฑด์œผ๋กœ ๋Œ€์ž… ๊ฐ€๋Šฅ

Procedure, User Defined Function์€ ์ž‘์„ฑ์ž ๊ธฐ์ค€์œผ๋กœ ํŠธ๋žœ์žญ์…˜์„ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๊ณ , ํ”„๋กœ์‹œ์ € ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•  ๊ฒฝ์šฐ ํ˜ธ์ถœ ํ”„๋กœ์‹œ์ €์˜ ํŠธ๋žœ์žญ์…˜๊ณผ๋Š” ๋ณ„๋„๋กœ PRAGMA AUTONOMOUS_TRANSACTION์„ ์„ ์–ธํ•˜์—ฌ ์ž์œจ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

PL/SQL๋กœ ์ž‘์„ฑ๋œ Procedure, User Defined Function์€ ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ฒ˜๋ฆฌ

Procedure ๋‚ด๋ถ€์— ์ž‘์„ฑ๋œ ์ ˆ์ฐจ์  ์ฝ”๋“œ๋Š” PL/SQ;L์—”์ง„์ด ์ฒ˜๋ฆฌํ•˜๊ณ , ์ผ๋ฐ˜์ ์ธ SQL๋ฌธ์žฅ์€ SQL์‹คํ–‰๊ธฐ๊ฐ€ ์ฒ˜๋ฆฌ

[์™œ ํ‹€๋ ธ๋‚˜?] PL/SQL์— ๋Œ€ํ•œ ๊ฐœ๋… ์ˆ™์ง€ ๋ฏธํก

์ ˆ์ฐจํ˜• SQL(=PL/SQL)์˜ ํŠน์ง•
1. Block๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์–ด ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ชจ๋“ˆํ™” ๊ฐ€๋Šฅ
2. ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ๋“ฑ์„ ์„ ์–ธํ•˜์—ฌ SQL ๋ฌธ์žฅ ๊ฐ„ ๊ฐ’์„ ๊ตํ™˜
3. IF, LOOP ๋“ฑ์˜ ์ ˆ์ฐจํ˜• ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ˆ์ฐจ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ๋‹ค.
4. DBMS ์ •์˜ ์—๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์ •์˜ ์—๋Ÿฌ๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
5. Oracle์— ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด ํ˜ธํ™˜์„ฑ์ด ์ข‹๋‹ค.
6. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
7. Block -> ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ ํ†ต์‹ ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

[124๋ฒˆ] ์ •๋‹ต โ‘ข / ๋‚ด ์ •๋‹ต โ‘ก

[ํ•ด์„ค] PL/SQL์—์„œ๋Š” ๋™์ SQL ๋˜๋Š” DDL๋ฌธ์žฅ์„ ์‹คํ–‰ํ•  ๋•Œ, EXECUTE IMMEDIATE๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

[์™œ ํ‹€๋ ธ๋‚˜?] PL/SQL๋ฌธ๋ฒ• ๊ทœ์น™ ์ˆ™์ง€ ๋ฏธํก

 

+ Recent posts