SQL

sql ๊ธฐ์ดˆ + group by / order by / where ์ค‘๋ณต

GABOJOK 2023. 9. 23. 23:00

limit ์ˆซ์ž

๐Ÿ‘‰  ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ '์ˆซ์ž' ๊ฐœ์ˆ˜ ๋งŒํผ๋งŒ ์ž˜๋ผ์„œ ๋ณด์—ฌ์ค˜.

select * from checkins
limit 5

 

 

 

max(ํ•„๋“œ๋ช…)   /  min(ํ•„๋“œ๋ช…)

๐Ÿ‘‰  ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ /  ์ตœ์†Ÿ๊ฐ’ ๊ตฌํ•˜๊ธฐ.

select week, min(likes) from checkins
group by week

 

 

avg(ํ•„๋“œ๋ช…)

๐Ÿ‘‰  ํ‰๊ท  ๊ตฌํ•˜๊ธฐ.

select week,avg(likes) from checkins
group by week

 

 

round( , ์ˆซ์ž)

๐Ÿ‘‰  ์†Œ์ˆซ์  "์ˆซ์ž" ์ž๋ฆฌ ๊นŒ์ง€๋งŒ ๋‚˜์˜ค๊ฒŒ ๋ฐ˜์˜ฌ๋ฆผ ํ•ด์ค˜  

์˜ˆ ) round ๊ด„ํ˜ธ ๋์— ์ ํžŒ ์ˆซ์ž๊ฐ€ 2๋ผ๋ฉด, ์†Œ์ˆซ์  2์งธ ์ž๋ฆฌ ๊นŒ์ง€๋งŒ ๋‚˜์˜ค๊ฒŒ ํ•ด์ค˜.

select week, round(avg(likes),3) from checkins
group by week

 

 

count(ํ•„๋“œ๋ช…)

๐Ÿ‘‰  ํ•ด๋‹น ํ•„๋“œ์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ. *๋กœ ํ•˜๋ฉด ์ „์ฒด ๊ฐœ์ˆ˜ ๊ตฌํ•˜๋Š” ๊ฒƒ. 

๐Ÿ‘‰  count๋Š” NULL์„ ์„ธ์ง€ ์•Š๋Š”๋‹ค

 
select week, count(likes) from checkins
group by week

 

 

sum(ํ•„๋“œ๋ช…) 

๐Ÿ‘‰  ํ•„๋“œ ์•ˆ์— ๋ฐ์ดํ„ฐ๋“ค ๋‹ค ๋”ํ•ด์ค˜. ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ.

select week, sum(likes) from checkins
group by week

 

 

group by ํ•„๋“œ์ด๋ฆ„

๐Ÿ‘‰  ๋™์ผ ํ•„๋“œ ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์„ ์ˆ˜ ์žˆ์Œ.

name ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด** ๊น€** ์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๋ฉด, group by๋ฅผ ํ†ตํ•ด ๊ฐ™์€ name์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์นจ.

select * from users u 
group by name

 

 

 

order by ํ•„๋“œ์ด๋ฆ„ 

๐Ÿ‘‰  ๋ฐ์ดํ„ฐ ์ •๋ ฌํ•˜๊ณ ์ž ํ• ๋•Œ ์”€. ๋””ํดํŠธ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ. asc 

๐Ÿ‘‰  ๋‚ด๋ฆผ์ฐจ์ˆœ  desc

๐Ÿ‘‰  ์ˆซ์ž, ๋ฌธ์ž์—ด, ์‹œ๊ฐ„๋„ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•จ

select name, count(*) from users
group by name
order by count(*)desc

 

์ •๋ ฌ์€ ์–ธ์ œ๋‚˜ ๋งˆ์ง€๋ง‰์— ํ•˜์ž. ์–ด์ฐจํ”ผ ๋งจ ๋งˆ์ง€๋ง‰์— ์‹คํ–‰๋จ.

 

 

 

order by ์กฐ๊ฑด์˜ ์ค‘๋ณต   /  group by ์กฐ๊ฑด์˜ ์ค‘๋ณต

๐Ÿ‘‰   ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๊ณ  ์‹ถ์œผ๋ฉด , ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

select * from orders o 
group by payment_method , course_id 
order by course_id , payment_method desc

 

 

 

where ์กฐ๊ฑด

๐Ÿ‘‰  ์›ํ•˜๋Š” ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ๋˜‘๋˜‘ํ•œ ์นญ๊ตฌ.

select payment_method, count(*) from orders
where course_title = "์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜"
group by payment_method;
 
 

where (ํ•„๋“œ๋ช…) like   '% gmail %'

๐Ÿ‘‰  % ๋Š” ์–ด๋–ค๊ฒŒ ์˜ค๋“  ์ƒ๊ด€ ์—†๋‹ค๋Š” ์˜๋ฏธ.
๐Ÿ‘‰  ํ•„๋“œ๋ช…์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ค‘  gmail ์ด ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์™€ ๋‹ฌ๋ผ๋Š” ๋ง์ž„.
select name, count(*) from users
where email like '%gmail.com'
group by name;

 

 

where (ํ•„๋“œ๋ช…)  between  '์–ธ์ œ๋ถ€ํ„ฐ'  and  '์ด๊ฑฐ ์ „ ๊นŒ์ง€'

๐Ÿ‘‰  created_at ๋‚ ์งœ๊ฐ€ 2020-08-01 ๋ถ€ํ„ฐ ~ 2020-10-10 ์ „๊นŒ์ง€ ํ•ด๋‹นํ•˜๋Š” ์ž๋ฃŒ๋งŒ ๊ฐ€์ ธ์™€ ๋‹ฌ๋ผ๋Š” ๋ง์ด๋‹ค.

select * from orders o 
where created_at between '2020-08-01' and '2020-10-10'

 

 

 

where  ์กฐ๊ฑด  or ์กฐ๊ฑด 

๐Ÿ‘‰  ๋‘˜์ค‘ ํ•˜๋‚˜๋ผ๋„ ์กฐ๊ฑด์— ํ•ด๋‹นํ•œ๋‹ค๋ฉด ๋ณด์—ฌ๋‹ฌ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. 

select * from orders o 
where (created_at between '2020-08-01' and '2020-10-10') or 
	  (created_at between '2020-07-01' and '2020-07-15')

 

 

where  ํ•„๋“œ  in  (์กฐ๊ฑด)

select * from users
where name in ('์‹ **', '์ด**')

 

๐Ÿ‘‰  ํ•˜๋‚˜๋ผ๋„ ์กฐ๊ฑด์— ํ•ด๋‹นํ•œ๋‹ค๋ฉด ๋ณด์—ฌ๋‹ฌ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค. 

๐Ÿ‘‰  or ์™€ ๊ฐ™์€ ์—ญํ•  ํ•จ.

๐Ÿ‘‰  ๊ด„ํ˜ธ ์•ˆ์— ์กฐ๊ฑด๋“ค์„ ์ฝค๋งˆ (,) ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ๋„ฃ์–ด์ค€๋‹ค. 

๐Ÿ‘‰  in ์˜ ๊ด„ํ˜ธ ์•ˆ์— ๋‹ค๋ฅธ select ๋ฌธ์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. 

 

select * from users u 
where u.user_id in (select o.user_id
	from orders o 
	where o.payment_method = 'kakaopay');

 

 

 

 

 

where ์กฐ๊ฑด์˜ ์ค‘๋ณต

๐Ÿ‘‰   ์—ฌ๋Ÿฌ๊ฐœ ์“ฐ๊ณ  ์‹ถ์œผ๋ฉด and ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

select payment_method, count(*) from orders 
where course_title = "์•ฑ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜" 
and email like '%naver.com'
group by payment_method

 

 

 

 

alias ๊ธฐ๋Šฅ 

as ๋ณ„์นญ์ง€์–ด์ฃผ์„ธ์š”         

๐Ÿ‘‰  sql์˜ ์ฟผ๋ฆฌ๋ฌธ์ด ๋ณต์žกํ•ด ์กŒ์„๋•Œ ํ—ท๊ฐˆ๋ฆฌ์ง€ ์•Š๋„๋ก alias ๋ฅผ ํ†ตํ•ด ์ด๋ฆ„ ์ง€์–ด๋Š” ๊ธฐ๋Šฅ.

๐Ÿ‘‰  ํ…Œ์ด๋ธ” ๋ช…, ํ•„๋“œ๋ช… ๋ชจ๋‘ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค.

select * from orders as o
where o.course_title = "์•ฑ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜";
select name, count(*) as freq from users
group by name