본문 바로가기
오답노트/SQL_1차

DAY 2.

by 쿙이콩 2025. 5. 15.
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

'오답노트 > SQL_1차' 카테고리의 다른 글

DAY 6.  (0) 2025.05.19
DAY 5.  (0) 2025.05.17
DAY 4.  (3) 2025.05.16
DAY 3.  (6) 2025.05.15
DAY 1.  (0) 2025.05.13