Tools 38

[SQL] ๐Ÿ“Œ ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ | median ํ•จ์ˆ˜ ์—†์ด ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• | ํ™œ์šฉ ์˜ˆ์ œ

์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ ์ค‘์•™๊ฐ’(median)์€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ–ˆ์„ ๋•Œ, ์ค‘์•™์— ์œ„์น˜ํ•œ ๊ฐ’์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋กœ, ํŠนํžˆ ๊ทน๋‹จ์ ์ธ ์ด์ƒ์น˜์— ์˜ํ–ฅ์„ ๋œ ๋ฐ›๋Š” ํŠน์ง•์ด ์žˆ์–ด ํ‰๊ท ๋ณด๋‹ค ๋” ์•ˆ์ •์ ์ธ ์ง€ํ‘œ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•:ํ™€์ˆ˜ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ:→ ๊ฐ€์šด๋ฐ ์žˆ๋Š” ๊ฐ’์ด ์ค‘์•™๊ฐ’์ž…๋‹ˆ๋‹ค.์˜ˆ: 3, 5, 7 → ์ค‘์•™๊ฐ’์€ 5์ง์ˆ˜ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ:→ ๊ฐ€์šด๋ฐ ๋‘ ๊ฐ’์˜ ํ‰๊ท ์ด ์ค‘์•™๊ฐ’์ž…๋‹ˆ๋‹ค.์˜ˆ: 2, 4, 6, 8 → ์ค‘์•™๊ฐ’์€ (4+6)/2 = 5์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ™€/์ง์ธ์ง€์— ๋”ฐ๋ผ ์ค‘์•™๊ฐ’์˜ ์œ„์น˜์™€ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์—์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ SQL ์ฟผ๋ฆฌ๋ฅผ ์งœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.MySQL์€ median์ด๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ์•„์ด๋””์–ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ™œ์šฉ ์˜ˆ์ œ ..

Tools/- SQL 2025.05.10

[SQL] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์ œ | ๋ณดํ˜ธ์†Œ์—์„œ ์ค‘์„ฑํ™”ํ•œ ๋™๋ฌผ | regexp ์ •๊ทœํ‘œํ˜„์‹

๋ฌธ์ œhttps://school.programmers.co.kr/learn/courses/30/lessons/59045 ํ”„๋กœ๊ทธ๋ž˜๋จธ์ŠคSW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„programmers.co.kr ์ฝ”๋“œ ๋‹ต์•ˆSELECT a.animal_id, a.animal_type, a.namefrom animal_ins ajoin animal_outs bon a.animal_id = b.animal_idwhere sex_upon_intake like "Intact%" and sex_upon_outcome regexp ('^Spayed|^Neutered') -- ์ •๊ทœํ‘œํ˜„์‹ ํ™œ์šฉ-- and (sex_upon_outcome like "Spay..

Tools/- SQL 2025.03.06

[SQL] ๐Ÿ“Œ recursive (์žฌ๊ท€์ฟผ๋ฆฌ) ์•Œ์•„๋ณด๊ธฐ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์˜ˆ์ œ | ๋ฉธ์ข…์œ„๊ธฐ์˜ ๋Œ€์žฅ๊ท  ์ฐพ๊ธฐ | level 5

์žฌ๊ท€์ฟผ๋ฆฌ(recursive)๋ž€?์žฌ๊ท€ํ•จ์ˆ˜๋ž€ ํ•จ์ˆ˜ ์•ˆ์— ์ž์‹ ์˜ ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์žฌ๊ท€ํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ ๋กœ์ง์„ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€, ์ผ์ •ํ•œ ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์ดํƒˆํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•œ๋‹ค.  ์žฌ๊ท€์ฟผ๋ฆฌ(recursive) ๋ฌธ๋ฒ•WITH RECURSIVE ๋ฌธ1. with๋ฌธ :โˆ™ ์žฌ๊ท€์ฟผ๋ฆฌ๋Š” ๊ผญ with๋ฌธ ์•ˆ์— ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.โˆ™ ์ผ๋ฐ˜ with๋ฌธ๊ณผ ๋‹ค๋ฅด๊ฒŒ cte์•ž์— 'recursive'๋ฅผ ์ ์–ด์ค˜์•ผ ํ•œ๋‹ค  ( ex: with recursive cte as )2. ๋น„๋ฐ˜๋ณต๋ฌธ (Non-Recursive) select ๋ฌธ :โˆ™์žฌ๊ท€์ฟผ๋ฆฌ์˜ ์ผ์ข…์˜ root์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.  ( i = i + 1์„ ๋ฐ˜๋ณตํ•  ๋•Œ, root๋กœ i = 1์„ ์‹ฌ์–ด์ฃผ๋Š” ๊ฒƒ )3. union allโˆ™ root์™€ ๋ฐ˜๋ณตํ•  ์ฟผ๋ฆฌ๋ฅผ ํ•ฉ์ณ์ค€๋‹ค.4. ๋ฐ˜๋ณต๋ฌธ ..

Tools/- SQL 2025.03.06

[SQL] solvesql | ๋ฐฐ์†ก ์˜ˆ์ •์ผ ์˜ˆ์ธก ์„ฑ๊ณต๊ณผ ์‹คํŒจ

๋ฌธ์ œhttps://solvesql.com/problems/estimated-delivery-date/ https://solvesql.com/problems/estimated-delivery-date/ solvesql.com ์ฝ”๋“œ๋‚˜์˜ ๋‹ต์•ˆ .. (์™ค์ผ€ ๋ณต์žกํ•˜๊ฒŒ ํ’€์—ˆ์ง€ ??)select purchase_date, (count(distinct order_id) - sum(mrk)) as success, sum(mrk) as failfrom (SELECT order_id, date(order_purchase_timestamp) as purchase_date, case when order_delivered_customer_date  ๊น”๋”ํ•œ ํƒ€ ๋ธ”๋กœ๊ทธ ํ’€์ดselect date(order_purcha..

Tools/- SQL 2025.02.14

[SQL] solvesql | ์‡ผํ•‘๋ชฐ์˜ ์ผ์ผ ๋งค์ถœ์•ก๊ณผ ARPPU

๋ฌธ์ œhttps://solvesql.com/problems/daily-arppu/ https://solvesql.com/problems/daily-arppu/ solvesql.com ์ฝ”๋“œselect date(o.order_purchase_timestamp) as dt, count(distinct o.order_id) as pu, sum(p.payment_value) as revenue_daily, round(sum(p.payment_value) / count(distinct o.order_id), 2) as arppu from olist_orders_dataset as ojoin olist_order_payments_dataset as p on o.order_id = p.order_idwhere..

Tools/- SQL 2025.02.14

[SQL] solvesql | ์„ธ ๋ช…์ด ์„œ๋กœ ์นœ๊ตฌ์ธ ๊ด€๊ณ„ ์ฐพ๊ธฐ | self join ํ™œ์šฉํ•˜๊ธฐ, on์ ˆ ์กฐ๊ฑด ์—ฌ๋Ÿฌ๊ฐœ

๋ฌธ์ œhttps://solvesql.com/problems/friend-group-of-3/ https://solvesql.com/problems/friend-group-of-3/ solvesql.com ๋ฌธ์ œ๊ฐ€ ์ข€ ํŠน์ดํ•˜๋‹ค..!a - b ๊ฐ€ ์นœ๊ตฌ์ด๊ณ b - c ๊ฐ€ ์นœ๊ตฌ์ด๊ณ c - a ๊ฐ€ ์นœ๊ตฌ์ธ ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค์ฐธ๊ณ ๋กœ a - b ์ธ ํ–‰์ด ์กด์žฌํ•˜๋ฉด b - a ์ธ ํ–‰์€ ์—†๋‹ค. ์ฆ‰, ์ค‘๋ณต ํ–‰์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฝ”๋“œ๋‚˜์˜ ๋‹ต์•ˆwith user_3 as (select a.user_a_id, a.user_b_id, case when a.user_b_id = b.user_a_id then b.user_b_id end as user_c_idfrom edges ajoin edges bon a.user_b_id ..

Tools/- SQL 2025.02.14

[SQL] solvesql | ๋ ˆ์Šคํ† ๋ž‘ ์š”์ผ ๋ณ„ ๊ตฌ๋งค๊ธˆ์•ก Top 3 ์˜์ˆ˜์ฆ

๋ฌธ์ œhttps://solvesql.com/problems/top-3-bill/ https://solvesql.com/problems/top-3-bill/ solvesql.com ์ฝ”๋“œSELECT day, time, sex, total_billfrom(select *, dense_rank() over (partition by day order by total_bill desc) as rnkfrom tips) as twhere rnk  ๋ฌธ์ œ ํ’€์ดdense_rank() over์ค‘๋ณต๊ฐ’์ด ์žˆ์œผ๋ฉด1 / 2 2 / 3์ด๋Ÿฐ์‹์œผ๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฒŒ dense_rank (์ˆœ์œ„๋ฅผ ๋นฝ๋นฝํ•˜๊ฒŒ ๋งค๊ธด๋‹ค -> denseํ•˜๋‹ค๋Š” ์‹์œผ๋กœ ์™ธ์› ๋‹ค) ์ฐธ๊ณ ๋กœ rank()๋Š” 1 / 2 2 / 4 ๋กœ ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์ง„๋‹ค. ๋А๋‚€ ์ ์—†์Œ !

Tools/- SQL 2025.02.14

[SQL] solvesql | ์œ ๋Ÿ‰(Flow)์™€ ์ €๋Ÿ‰(Stock) | strftime๋กœ ๋‚ ์งœ ์ถ”์ถœํ•˜๊ธฐ | SQLite

๋ฌธ์ œhttps://solvesql.com/problems/flow-and-stock/ https://solvesql.com/problems/flow-and-stock/ solvesql.com ์ฝ”๋“œselect year as "Acquisition year", acquisition as "New acquisitions this year (Flow)", sum(acquisition) over (order by year) as "Total collection size (Stock)"from(select substring(acquisition_date, 1, 4) as year, count(distinct artwork_id) as acquisitionfrom artworksgroup by 1having ..

Tools/- SQL 2025.02.09

[SQL] solvesql | ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์‚ฌ์˜ ์ฃผ๋ ฅ ํ”Œ๋žซํผ ์ฐพ๊ธฐ

๋ฌธ์ œhttps://solvesql.com/problems/main-platform-of-game-developers/ https://solvesql.com/problems/main-platform-of-game-developers/ solvesql.com ์ด ๋ฌธ์ œ๋Š” ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์™€ ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ํŒŒ์•…ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋‹ค ์ฝ”๋“œ ๋‹ต์•ˆselect c.name as developer, p.name as platform, t.sales as salesfrom(select developer_id, platform_id, sum(sales_na + sales_eu + sales_jp + sales_other) as sales, dense_rank() over (partition by devel..

Tools/- SQL 2025.02.09

[SQL] solvesql | ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰ ์ด๋™ ํ‰๊ท  ๊ตฌํ•˜๊ธฐ | rows ์™€ range์˜ ์ฐจ์ด

๋ฌธ์ œhttps://solvesql.com/problems/moving-average-of-power-consumption/ https://solvesql.com/problems/moving-average-of-power-consumption/ solvesql.com ์ฝ”๋“œSELECT datetime(measured_at, '+10 minutes') end_at, -- SQLite์—์„œ ์‹œ๊ฐ„ ๋”ํ•˜๋Š” ํ•จ์ˆ˜ round(avg(zone_quads) OVER (ORDER BY measured_at ROWS BETWEEN 5 PRECEDING AND CURRENT ROW), 2) zone_quads, round(avg(zone_smir) OVER (ORDER BY measured_at ROWS BETWEEN 5 ..

Tools/- SQL 2025.02.09