Studynote/DB

[MySQL] SQL ์ž…๋ฌธ - ๊ธฐ์ดˆ๋ฌธ๋ฒ•(2)

minzhen 2022. 3. 13. 17:49

์ด๋ฒˆ์—๋Š” ํ†ต๊ณ„์ ์ธ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ฆ‰, ์ตœ๋Œ€, ์ตœ์†Œ, ํ‰๊ท , ๊ฐฏ์ˆ˜ ๋“ฑ๊ณผ ๊ด€๋ จ ์žˆ๋Š” ๋ฌธ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

 

  • group by
๋™์ผํ•œ ๋ฒ”์ฃผ๋ฅผ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด์„œ, ๋ฒ”์ฃผ๋ณ„ ํ†ต๊ณ„๋ฅผ ๋‚ด์ฃผ๋Š” ๊ฒƒ
(1) ๊ฐ™์€ ๋ฒ”์ฃผ๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ , (2) ๊ฐ ๋ฒ”์ฃผ์˜ ๋ฐ์ดํ„ฐ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
SELECT name, count(*) FROM users u 
	group by name
  • ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ค๋ฅ˜ : group by๋ฅผ ํ•˜๊ธด ํ–ˆ์ง€๋งŒ ๊ทธ ๋ฌถ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ํ†ต๊ณ„์น˜๋กœ ์ถœ๋ ฅํ•ด๋‹ฌ๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์—†์–ด์„œ!
select * from orders
	group by payment_method
--- ์ด๋Ÿฌ๋ฉด ์ถœ๋ ฅํ•ด๋ณด๋ฉด Error!

 

  •  max / min
์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ์ฐพ๊ธฐ
SELECT week, min(likes) FROM checkins c 
	group by week
--- ์ฃผ์ฐจ๋ณ„ ์ข‹์•„์š”๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์ˆœ ์˜ค๋Š˜์˜ ๋‹ค์ง ์กฐํšŒํ•˜๊ธฐ

SELECT week, max(likes) FROM checkins c 
	group by week
--- ์ฃผ์ฐจ๋ณ„ ์ข‹์•„์š”๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ˆœ ์˜ค๋Š˜์˜ ๋‹ค์ง ์กฐํšŒํ•˜๊ธฐ

 

  • avg
๋ฐ์ดํ„ฐ๋“ค์˜ ํ†ต๊ณ„๊ฐ’
select week, avg(likes) from checkins
	group by week
--- ์ฃผ์ฐจ๋ณ„ ์˜ค๋Š˜์˜ ๋‹ค์ง ๋‹น ์ข‹์•„์š” ์ˆ˜์˜ ํ‰๊ท  ์กฐํšŒํ•˜๊ธฐ

select week, round(avg(likes),2) from checkins
	group by week
--- ์ฃผ์ฐจ๋ณ„ ์˜ค๋Š˜์˜ ๋‹ค์ง ๋‹น ์ข‹์•„์š” ์ˆ˜์˜ ํ‰๊ท  ์กฐํšŒํ•˜๊ธฐ, ๋‹จ ์†Œ์ˆ˜์ ์€ ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€๋งŒ ํ‘œ์‹œํ•œ๋‹ค

 

  • sum
๋ฐ์ดํ„ฐ๋“ค์˜ ํ•ฉ๊ณ„ ๊ฐ’
select week, sum(likes) from checkins
	group by week
--- ์˜ค๋Š˜์˜ ๋‹ค์ง ์ค‘ ์ฃผ์ฐจ๋ณ„ ํ•ฉ๊ณ„ ๊ฐœ์ˆ˜

 

  • order by
์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
select name, COUNT(*) from users
	group by name 
	ORDER by count(*)
--- ์ž๋™์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ (asc : ์จ๋„ ๋˜๊ณ  ์•ˆ ์จ๋„ ๋จ)
    
select name, COUNT(*) from users
	group by name 
	ORDER by count(*) desc
--- desc : ๋‚ด๋ฆผ์ฐจ์ˆœ

select * from checkins
	order by likes
--- likes๊ฐ€ ์ ์€ ๊ฒƒ๋ถ€ํ„ฐ ๋‚˜์˜ด. ์ฆ‰, group by๋ž‘ ๊ผญ ๊ฐ™์ด ์จ์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹˜!

 

๐Ÿ“Œ ์—๋Ÿฌ๊ฐ€ ์•ˆ ๋‚˜๋Š” Query๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” SQL Query๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”!
     ์œ„ ์นธ์˜ ์ฟผ๋ฆฌ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ : from → group by → select → order by

 

  • ์‘์šฉ : ์œ„์˜ ๋ฌธ๋ฒ•๋“ค ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ
SELECT payment_method, count(*) from orders o
	where course_title = '์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜'
	group by payment_method
	order by count(*) desc

 

  • Alias
์–ด๋А ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์ธ์ง€๋ฅผ ๋ณด์—ฌ์คŒ!
SELECT payment_method, COUNT(*) as cnt from orders o 
	where o. course_title = '์•ฑ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜'
	group by payment_method

์ถœ๋ ฅ์ฐฝ์—์„œ๋„ alias(๋ณ„์นญ) ์‚ฌ์šฉ ๊ฐ€๋Šฅ