๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SQL/LeetCode

[SQL50] #26. Classes More Than 5 Students

by ์ด๋ฎด 2024. 1. 5.
728x90

๐Ÿ’ป ๋ฌธ์ œ ์ฃผ์†Œ : https://leetcode.com/problems/classes-more-than-5-students/?envType=study-plan-v2&envId=top-sql-50

 

Classes More Than 5 Students - LeetCode

Can you solve this real interview question? Classes More Than 5 Students - Table: Courses +-------------+---------+ | Column Name | Type | +-------------+---------+ | student | varchar | | class | varchar | +-------------+---------+ (student, class) is the

leetcode.com

 

๐Ÿ’ป ๋ฌธ์ œ

Write a solution to find all the classes that have at least five students. Return the result table in any order.

Input๊ณผ Output ์˜ˆ์‹œ

 

๐Ÿ’ป ์ฝ”๋“œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ

๋”๋ณด๊ธฐ
select class from Courses group by class having count(class) >= 5

 

๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ํฌ๊ฒŒ ์–ด๋ ค์šธ ๊ฒƒ์ด ์—†์—ˆ์œผ๋‚˜ Solution์— ํ•œ ๊ฐ€์ง€ ๋ˆˆ์— ๋„๋Š” ์งˆ๋ฌธ์ด ์žˆ์–ด์„œ ํ‹ฐ์Šคํ† ๋ฆฌ์—๋„ ๋„ฃ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค. 

 

Why we can't use 'where' in this?

 

๋ผ๋Š” ์งˆ๋ฌธ์œผ๋กœ, ์ฟผ๋ฆฌ์— where ์กฐ๊ฑด์ด ์•„๋‹Œ having ์ ˆ์„ ๋„ฃ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์˜์˜€๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋‹ต์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ™•์ธํ•ด๋ณด์ž.

 

1๏ธโƒฃ To find all the classes that have at least five students

์ตœ์†Œ 5๋ช…์˜ ์ˆ˜๊ฐ•์ƒ์ด ์žˆ๋Š” ์ˆ˜์—…์„ ์ฐพ๋Š” ๊ฒƒ์ด ์ด๋ฒˆ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์ด๋‹ค. Courses ํ…Œ์ด๋ธ”์—๋Š” Math, English ๋“ฑ ๋งŽ์€ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”๋ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๊ธฐ ์œ„ํ•ด์„œ๋Š” group by๊ฐ€ ์“ฐ์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋“ค ๋ˆˆ์น˜์ฑ˜์„ ๊ฒƒ์ด๋‹ค.

 

๋‹ค๋งŒ ์™œ where์ด ์•„๋‹Œ having์ธ๊ฐ€? ๋ผ๋Š” ๊ฒƒ์ด ๊ทธ๋“ค์˜ ์งˆ๋ฌธ์ธ๋ฐ, ์ด๋Š” group by ๋•Œ๋ฌธ์ด๋‹ค.

 

์ด๋ฏธ Courses ํ…Œ์ด๋ธ”์€ 'ํ…Œ์ด๋ธ”๋ณ„๋กœ'๋ผ๋Š” ์กฐ๊ฑด ๋•Œ๋ฌธ์— ์ด๋ฏธ ๋ ˆ์ฝ”๋“œ๋“ค์ด class๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌถ์—ฌ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ   class ๋ณ„๋กœ ์ˆ˜๊ฐ•์ƒ์„ ๊ตฌํ•œ๋‹ค๋Š” ๊ฒƒ์€, ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜ํ•˜๋‚˜์— ์กฐ๊ฑด์„ ๊ฑด๋‹ค๋Š” ๋œป์ด ์•„๋‹ˆ๋ผ class๋กœ ๋ฌถ์ธ '์ง‘ํ•ฉ'์— ์กฐ๊ฑด์„ ๊ฑด๋‹ค๋Š” ๋œป์ด๋‹ค.

 

ํ•œ ๋ฒˆ where ์ ˆ๋กœ ํด๋ž˜์Šค ์ˆ˜๊ฐ•์ƒ์ด 5๋ช… ์ด์ƒ์ด๋ผ๋Š” ์กฐ๊ฑด์„ ๊ฑธ์–ด๋ณด์ž.

select class from Courses where count(class) >= 5

 

์œ„ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Invalid use of group function์ด๋ผ๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋Œ€๋กœ ํ•ด์„ํ•˜๋ฉด group ๊ธฐ๋Šฅ ์‚ฌ์šฉ ์ž์ฒด๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. where ์ ˆ์—์„œ ์ˆ˜๊ฐ•์ƒ ์ธ์›์„ ์„ธ๊ธฐ ์œ„ํ•ด count() ํ•จ์ˆ˜๋ฅผ ์ผ๋Š”๋ฐ ์• ์ดˆ์— class ์ปฌ๋Ÿผ ์ž์ฒด๊ฐ€ ํ˜„์žฌ ๋ฌถ์—ฌ ์žˆ๋Š” ์ง‘ํ•ฉ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ˆ ์…€ ์ˆ˜ ์žˆ๋Š” count๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— group function์ด ์œ ํšจํ•˜์ง€ ์•Š๋‹ค๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

728x90
๋ฐ˜์‘ํ˜•