Tools/- SQL

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

์Šค์œ„๋ฏผ 2025. 2. 9. 21:35

๋ฌธ์ œ

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 sales
from
(select 
  developer_id, 
  platform_id, 
  sum(sales_na + sales_eu + sales_jp + sales_other) as sales,
  dense_rank() over (partition by developer_id order by sum(sales_na + sales_eu + sales_jp + sales_other) desc) as rnk
from games
where developer_id is not null
group by 1, 2) as t
join companies c on t.developer_id = c.company_id
join platforms p on t.platform_id = p.platform_id
where t.rnk = 1

 

๋ฌธ์ œ ํ’€์ด

1. ๋‹ค์ค‘ ๋งค์ถœ ์ปฌ๋Ÿผ์˜ sum์„ ๊ตฌํ•œ ๋’ค, ํ”Œ๋žซํผ๋ณ„ ๋งค์ถœ์˜ sum ๊ตฌํ•˜๊ธฐ

sum(sales_na + sales_eu + sales_jp + sales_other) ์ด๋ ‡๊ฒŒ ์ด์ค‘์œผ๋กœ sum์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค ..!

 

2. dense_rank() over (partition by ~)

์—ฌ๊ธฐ์„œ ์•„๋ฌด ์ƒ๊ฐ์—†์ด ํŒŒํ‹ฐ์…˜์„ ํšŒ์‚ฌ, ํ”Œ๋žซํผ์œผ๋กœ ๋‚˜๋ˆŒ ๋ป” ํ–ˆ๋‹ค.

ํ”Œ๋žซํผ์˜ ๋งค์ถœ ์ˆœ์œ„๋ฅผ ๊ตฌํ•˜๋Š”๊ฑฐ๋‹ˆ ํ”Œ๋žซํผ์€ ๋นผ์•ผ๊ฒ ์ ธ ใ…‹ใ…œ

 

๋‚˜๋จธ์ง€๋Š” ๋ฌธ์ œ ์กฐ๊ฑด์„ ์ž˜ ํŒŒ์•…ํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ์ดํ•ดํ•˜๋ฉด ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

๋А๋‚€ ์ 

ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋ฅผ ๋นจ๋ฆฌ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ๋„ ๋Šฅ๋ ฅ์ด๋‹ค !