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;