๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ›‹๏ธ ๋ฐ์ดํ„ฐ ๋ถ„์„24

[๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ํ†ต๊ณ„๊ฐœ๋…2] ๊ฐ€์„ค๊ฒ€์ • (with A/B Test) ๋ชฉ์ฐจ1. ๋ชจ์ง‘๋‹จ๊ณผ ํ‘œ๋ณธ  ์„œ๋น„์Šค์˜ ๊ด€์ ์—์„œ ๋ชจ์ง‘๋‹จ๊ณผ ํ‘œ๋ณธ์„ ๋ถ„๋ฅ˜ํ•˜๊ณ  A/B ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ•˜์ž.๊ทธ๋Ÿด ๋•Œ ๋ชจ์ง‘๋‹จ์€ ์ง€๊ธˆ ์šฐ๋ฆฌ์˜ ์ „์ฒด ๊ณ ๊ฐ์„ ๋„˜์–ด ์•ž์œผ๋กœ์˜ ์˜ˆ๋น„ ๊ณ ๊ฐ์„ ๋ชจ๋‘ ํฌํ•จํ•œ ์ง‘๋‹จ์ด๋‹ค.๊ทธ๋ฆฌ๊ณ  ํ‘œ๋ณธ์€ ์šฐ๋ฆฌ๊ฐ€ ์‹คํ—˜์„ ์œ„ํ•ด ์ถ”์ถœํ•œ ์ผ๋ถ€ ๊ณ ๊ฐ์ง‘๋‹จ์ด๋‹ค.  ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€, ์šฐ๋ฆฌ๊ฐ€ ๊ฑด๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์€ ์‹คํ—˜์— ๋…ธ์ถœ๋˜๋Š” '์ผ๋ถ€ ๊ณ ๊ฐ'์ด์ง€ ๋ชจ์ง‘๋‹จ์ธ ์ „์ฒด์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.  1) ๋ชจ์ง‘๋‹จ๊ณผ ๋ฐ์ดํ„ฐ(ํ‘œ๋ณธ) ์‚ฌ์ด์˜ ์˜ค์ฐจ : ํ‘œ๋ณธ์˜ค์ฐจ ์ „์ฒด๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ์— ์šฐ๋ฆฌ๋Š” ํ‘œ๋ณธ์„ ๊ฐ€์ง€๊ณ  ๋ชจ์ง‘๋‹จ์„ ์ถ”์ •ํ•ด์•ผํ•œ๋‹ค.์ด๋•Œ ์ถ”์ถœํ•œ ํ‘œ๋ณธ๊ณผ ๋ชจ์ง‘๋‹จ์˜ ๋ฐ์ดํ„ฐ ์‚ฌ์ด์—๋Š” ์˜ค์ฐจ๊ฐ€ ์—†์„๊นŒ ? ์ผ๋ฐ˜์ ์œผ๋กœ ํ‘œ๋ณธํ‰๊ท ๊ณผ ๋ชจ์ง‘๋‹จํ‰๊ท ์€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋กœ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง ์•Œ๊ณ  ์‹ถ์€ ๊ฒƒ(๋ชจ์ง‘๋‹จ)๊ณผ ์‹ค์ œ ์† ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ(ํ‘œ๋ณธ)์—๋Š” ์˜ค์ฐจ๊ฐ€.. 2024. 12. 21.
์ด๋™ํ‰๊ท ์˜ ๊ฐœ๋…๊ณผ SQL์—์„œ ๊ตฌํ˜„ํ•˜๊ธฐ 1. ์ด๋™ํ‰๊ท ์ด๋ž€์ด๋™ ํ‰๊ท (Moving Average)์€ ๋ฐ์ดํ„ฐ ๋ถ„์„์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ์ฃผ๋กœ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ๋ณ€๋™์„ฑ์„ ์ค„์ด๊ณ , ๋ฐ์ดํ„ฐ์˜ ํŒจํ„ด์ด๋‚˜ ์ถ”์„ธ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋™ ํ‰๊ท ์€ ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜์—ฌ, ๋ฐ์ดํ„ฐ์˜ ๋ณ€ํ™”๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์–ด ์ค€๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ ๋‚ด์˜ ์žฅ๊ธฐ๊ฐ„, ๋‹จ๊ธฐ๊ฐ„์˜ ํŠธ๋žœ๋“œ๋ฅผ ์ฝ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.  1) ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท  (Simple Moving Average ; SMA)์ผ์ •ํ•œ ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•œ๋‹ค.์—ฌ๊ธฐ์„œ X_t๋Š” ํ˜„์žฌ ์‹œ์ ์˜ ๊ฐ’, n์€ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•  ๊ธฐ๊ฐ„์ด๋‹ค. 2) ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท  (Weighted Moving Average; WMA)์ตœ๊ทผ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๋” ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€ํ•ด ํ‰๊ท ์„ ๊ณ„์‚ฐํ•œ๋‹ค.์—ฌ๊ธฐ์„œ W_i๋Š” ๊ฐ ๋ฐ์ดํ„ฐ .. 2024. 12. 14.
LAG, LEAD๋กœ ์ด์ „, ๋‹ค์Œํ–‰ ๊ฐ€์ ธ์˜ค๊ธฐ ๋ชฉ์ฐจ1. LAG: ์ด์ „ ํ–‰์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. LAG(col_name) OVER(ORDER BY )SELECT LAG(job) OVER(ORDER BY job, empno) AS JOB_PREV job, empno ๊ธฐ์ค€ ์ •๋ ฌํ•˜์—ฌ ์ด์ „ ๊ฐ’์„ JOB_PREV ์—ด๋กœ ๊ฐ€์ ธ์˜ด.   2. LEAD: ๋‹ค์Œ ํ–‰์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.LEAD(col_name) OVER(ORDER BY )SELECT LEAD(job) OVER(ORDER BY job, empono) AS JOB_NEXTjob, empno ๊ธฐ์ค€ ์ •๋ ฌํ•˜์—ฌ ๋‹ค์Œ ๊ฐ’์„ JOB_NEXT ์—ด๋กœ ๊ฐ€์ ธ์˜ด.  3. ๊ณ ๊ธ‰ ์‚ฌ์šฉ1) ๊ฐ€์ ธ์˜ฌ ํ–‰์˜ ์œ„์น˜ ์ง€์ •ํ•˜๊ธฐ๋ฐ”๋กœ ์ด์ „, ๋‹ค์Œ ๊ฐ’์ด ์•„๋‹ˆ๋ผ nํ–‰ ๋’ค์— ์žˆ๋Š”, ์•ž์— ์žˆ๋Š” ๋“ฑ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ... 2024. 12. 14.
[Advent of SQL 2024 ๐ŸŽ„] ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰ ์ด๋™ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ (Day 14) ๋‚œ์ด๋„4  Power Consumption of Tetouan City ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ชจ๋กœ์ฝ” ๋ถ๋ถ€ ๋„์‹œ ์ค‘ ํ•˜๋‚˜์ธ ํ…Œํˆฌ์•ˆ ์ง€์—ญ์˜ ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰๊ณผ ๊ธฐ์ƒ ๊ด€์ธก์น˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž…๋‹ˆ๋‹ค. ํ…Œํˆฌ์•ˆ ์ง€์—ญ์—๋Š” Quads, Smir, Boussafou ์ด 3๊ฐœ ์ง€์—ญ์— ๋ฐœ์ „์†Œ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ๋ฐœ์ „์†Œ๋กœ ๋ถ€ํ„ฐ์˜ ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰์ด ๊ฐ๊ฐ ์ธก์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰ ์ธก์ •์€ ๋งค 10๋ถ„๋งˆ๋‹ค ์‹œ์ž‘ํ•ด 10๋ถ„๊ฐ„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ , measured_at ์ปฌ๋Ÿผ์— ์ธก์ • ์‹œ์ž‘ ์‹œ๊ฐ์ด ๊ธฐ๋ก๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰์€ ์ˆœ๊ฐ„์ˆœ๊ฐ„ ํฌ๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ๊ฐ’์ด๊ธฐ์— ํŠธ๋ Œ๋“œ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ์ˆ˜์š” ์˜ˆ์ธก์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์„ ์ž์ฃผ ์‚ฌ์šฉ ํ•ฉ๋‹ˆ๋‹ค.2017๋…„ 1์›” 1์ผ 0์‹œ๋ถ€ํ„ฐ 2017๋…„ 2์›” 1์ผ 0์‹œ๊นŒ์ง€ 10๋ถ„ ๋‹จ์œ„๋กœ 3๊ฐœ ๋ฐœ์ „์†Œ ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰์˜ 1์‹œ๊ฐ„ ๋ฒ”์œ„ .. 2024. 12. 14.
COALESCE( )๋ฅผ ํ†ตํ•ด NULL๊ฐ’ ๋ณ€ํ™˜ํ•˜๊ธฐ COALESCE( ) COALESCE(col1, col2, col2, ..., ...) COALESCEํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ์ฃผ์–ด์ง„ col๋“ค ์ค‘์—์„œ null์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋”ฐ๋ผ์„œ NULL๊ฐ’์„ ํŠน์ • ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. SELECT COALESCE(col1, '๊ณต๋ฐฑ') FROM member→ col1 ์ปฌ๋Ÿผ์— NULL๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ '๊ณต๋ฐฑ'์œผ๋กœ ๋Œ€์‹  ์ถœ๋ ฅํ•œ๋‹ค.  SELECT COALESCE(col1, col2, '๊ณต๋ฐฑ') FROM member→ col1 ์ปฌ๋Ÿผ์— NULL๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ col2์œผ๋กœ ๋Œ€์‹  ๋ฐ˜ํ™˜ํ•œ๋‹ค. → ๋งŒ์ผ col2 ๊ฐ’๋„ NULL์ธ ๊ฒฝ์šฐ, '๊ณต๋ฐฑ'์„ ๋Œ€์‹  ์ถœ๋ ฅํ•œ๋‹ค.  IFNULL(col_name, 'NULL์ผ ๋•Œ์˜ ๋ฐ˜ํ™˜๊ฐ’') ์—ญ์‹œ NULL๊ฐ’์„ ์ฒ˜.. 2024. 12. 14.
COUNT OVER( )๋กœ ๊ทธ๋ฃน๋ณ„ ์ง‘๊ณ„ํ•˜๊ธฐ ๋ชฉ์ฐจ1. COUNT( ) OVER( ) COUNT ํ•จ์ˆ˜๋ฅผ OVER์ ˆ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด GROUP BY์ ˆ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด ๊ฑด์ˆ˜, ๊ทธ๋ฃน๋ณ„ ๊ฑด์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•ด์„œ ๊ฐ ํ–‰์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. 1) ์ „์ฒด ์ด ๊ฑด์ˆ˜ ๊ตฌํ•˜๊ธฐCOUNT(*) OVER()SELECT *, COUNT(*) OVER() AS TOTAL_COUNTFROM ECOLI_DATA ๋‹จ์ˆœํžˆ COUNT(*)๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์กฐํšŒ๋œ ๋ฐ์ดํ„ฐ์˜ ์ด ๊ฑด์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. TOTAL_COUNT > ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜ ๊ฐ’์„ ํ‘œ์‹œํ•จ.  * OVER ์ ˆ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์กฐํšŒ๋œ ํ›„ ORDER BY ์‹คํ–‰๋˜๊ธฐ ๋ฐ”๋กœ ์ „์— ์‹คํ–‰๋จ.  2) ์ˆœ์ฐจ์  ๋ˆ„์  ๊ฑด์ˆ˜ ๊ตฌํ•˜๊ธฐ COUNT(*) OVER(ORDER BY COLNAME) AS ALIAS SELECT *, COUNT(*) OV.. 2024. 12. 14.