MySQL

MySQL) ์„œ๋ธŒ์ฟผ๋ฆฌ(Sub Query)์™€ Concat, Max, Min, Avg ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ

567Rabbit 2024. 5. 14. 13:30

SUB QUERY (์„œ๋ธŒ์ฟผ๋ฆฌ)

 

-- pages๊ฐ€ ๊ฐ€์žฅ ๊ธด ์ฑ…์˜, ์ œ๋ชฉ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
-- ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 1. ์ •๋ ฌํ•ด์„œ limit
select title
from books
order by pages desc
limit 1;

-- ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 2. sub query(์„œ๋ธŒ์ฟผ๋ฆฌ)ํ•˜๋Š” ๋ฐฉ๋ฒ•
select title
from books
where pages = (select max(pages) from books);



 

 

concat ํ•จ์ˆ˜

: ๋ฌธ์ž์—ด ์ด์–ด์ฃผ๋Š” ํ•จ์ˆ˜

 

-- ๋ฌธ์ž์—ด์„ ํ•ฉ์น˜๋Š” ํ•จ์ˆ˜ concat()
-- author_fname, author_lname ์ปฌ๋Ÿผ์˜ ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์„œ, full_name์ด๋ผ๋Š” ์ปฌ๋Ÿผ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.
-- as ์ƒ๋žต ๊ฐ€๋Šฅ
select * , concat( author_fname,' ', author_lname) full_name
from books;


-- concat_ws() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• : ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋ฌธ์ž์—ด ๋ถ™์ผ๋•Œ ์‚ฌ์šฉํ•  ๋ฌธ์ž์—ด
-- as ์ƒ๋žต ๊ฐ€๋Šฅ
select * , concat_ws( ' ' , author_fname , author_lname ) as full_name
from books;


-- ์ด๋ฆ„ ๋‘๊ฐœ๋ฅผ ๋ถ™์—ฌ์„œ, full_name์„ ๋งŒ๋“ค๊ณ ,
-- ์ฑ… ์ œ๋ชฉ๊ณผ ์ถœ๊ฐ„๋…„๋„๋ฅผ ๊ฐ™์ด ๋ณด์—ฌ๋‹ฌ๋ผ
select title, released_year, concat_ws( ' ' , author_fname , author_lname ) as full_name
from books;


-- ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ฐœ๊ฐ„๋œ ์ฑ… 3๊ถŒ์„ ์ฐพ์•„์„œ ์กฐํšŒํ•˜์‹œ์˜ค
select concat_ws(' - ',title, released_year) as summary
from books
order by released_year desc 
limit 3;


-- author_lname์œผ๋กœ ์ •๋ ฌํ•˜๋˜, my favorite author is ๋ฅผ ๋ถ™์—ฌ์„œ ์กฐํšŒํ•˜์‹œ์˜ค
select concat('MY FAVORITE AUTHOR IS ',author_lname,'!') yell
from books
order by author_lname asc;

 

 

 

 

max, min, avg

 

-- ์ตœ๋Œ€๊ฐ’ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ max()
-- ํŽ˜์ด์ง€์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์ฑ…์€, ๋ช‡ํŽ˜์ด์ง€ ์ž…๋‹ˆ๊นŒ?
select max(pages)
from books;


-- ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ min()
-- ์ถœํŒ๋…„๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ์ฑ…์€ ๋ช‡๋…„๋„ ์ž…๋‹ˆ๊นŒ?
select *, min(released_year)
from books;


-- ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜ avg()
--  ๋…„๋„๋ณ„ ์ฑ…์˜ ๊ฐฏ์ˆ˜์™€ ํ‰๊ท  ํŽ˜์ด์ง€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์„ธ์š” ๋‹จ, ๋…„๋„๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค
select released_year as year , count(released_year) as '# books', avg(pages) as 'avg pages'
from books
group by released_year
order by released_year asc;