728x90
SQL LV1.
1. 잡은 물고기 중 가장 큰 물고기의 길이 구하기
문제 잡은 물고기 중 가장 큰 물고기의 길이를 'cm' 를 붙여 출력하는 SQL 문을 작성. 이 때 컬럼명은 'MAX_LENGTH' 로 지정
select concat(max(length), 'cm') max_length
from fish_info
오답노트 : concat을 기억하자
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
2. 잡은 물고기의 평균 길이 구하기
문제 잡은 물고기의 평균 길이를 출력하는 SQL문을 작성. 평균 길이를 나타내는 컬럼 명은 AVERAGE_LENGTH. 평균 길이는 소수점 3째자리에서 반올림하며, 10cm 이하의 물고기들은 10cm 로 취급하여 평균 길이를 구해주세요.
-- if
select round(avg(if(length is null, 10, length)), 2) as average_length
from fish_info;
-- ifnull
select round(avg(ifnull(length,10)),2) as average_length
from fish_info
-- case when
select round(avg(
case
when length is null then 10
when length <=10 then 10
else length
end),2) as average_length # end로 끝내: case when에 대한 별칭 정할 필요X(어차피 별칭 그 줄 맨 끝에 써 줌)
from fish_info
-- subquery
select round(avg(a.length),2) as average_length
from
(
select
case
when length is null then 10
when length <=10 then 10
else length
end as length
from fish_info
) a
오답노트
round(값, 소수점)
소수점: 3째자리에서 반올림하라 = 2째자리까지 반올림해서 보여주시오 = round(값, 2)
if(조건, 조건 참일 경우 넣을 값, 조건 거짓일 경우 넣을 값)
조건: 길이가 10cm 이하인 경우
참 : 10cm로 취급
거짓: 그냥 length로 나오게 하기
ifnull(컬럼, 넣을 값)
ifnull(length, 10)
case when --- end 꼭 써줘야 함!!!
TAB을 입력해서 쓰지 않으면 계속 오류 뜸
select
[TAB] case
[TAB][TAB] when, else, end
subquery
앞에 case when이랑 비교했을때,
as average_length 별칭을 어디에 쓸 것이냐,
round의 ,2를 어디에 쓸 것이냐가 다름
728x90