본문 바로가기

Skill Sets/SQL

[SQL] 잡은 물고기 중 가장 큰 물고기의 길이 구하기(프로그래머스/MySQL/Level 1)

SMALL


안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 연습에 있는 "잡은 물고기 중 가장 큰 물고기의 길이 구하기" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/298515)


 

1. 문제 : 잡은 물고기 중 가장 큰 물고기의 길이 구하기(Lv. 1)

 


 

2. 문제 설명

 

 

낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다. 

FISH_INFO 테이블의 구조는 다음과 같으며

ID, FISH_TYPE, LENGTH, TIME은 각각

잡은 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이(cm), 물고기를 잡은 날짜를 나타냅니다.

 

[ 테이블 구조('FISH_INFO') ]

COLUMN NAME TYPE NULLABLE
ID INTEGER FALSE
FISH_TYPE
INTEGER FALSE
LENGTH FLOAT TRUE
TIME DATE FALSE

 

 

단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH 가 NULL이며,

LENGTH에 NULL 만 있는 경우는 없습니다.

 

[ 문제 ]

 

FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 'cm'를 붙여

출력하는 SQL 문을 작성해주세요.

이때 컬럼명은 'MAX_LENGTH'로 지정해주세요.

 

[ 예시 ]

 

예를 들어 FISH_INFO 테이블이 다음과 같고

ID FISH_TYPE LENGTH TIME
0 0 13.37 2021/12/04
1 0 50.00 2020/03/07
2 0 40.00 2020/03/07
3 1 43.33 2022/03/09
4 1 NULL 2022/04/08
5 2 32.00 2021/04/28

 

가장 큰 물고기의 길이는 50cm 이므로 결과는 다음과 같아야 합니다.

 

[ 출력 결과 ]

MAX_LENGTH
50.00cm

 

 


 

3. 문제 풀이

-- 1안
SELECT  CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
  FROM  FISH_INFO A

 

 

이번 문제는 총 1안 한 가지로 작성했습니다!

 

제가 문제를 풀이하면서 가장 짧은 식을 작성한 것 같네요!

#  1안 풀이 설명

# [ 문제 접근 설명 ]


문제를 읽고 조건에 맞는 쿼리를 작성하기 위해서 다음과 같이  두 가지 단계로 진행했어요!

1. FISH_INFO 테이블에서 가장 큰 물고기의 길이 구하기(MAX 함수)

2. 가장 큰 물고기 길이에서 'cm' 문자열 추출하기(CONCAT 함수)

 

# [ 1안 쿼리 작성 설명 ]

 

 1  첫 번째 단계에서는 MAX() 함수를 이용해서 물고기 중 가장 긴 길이를 산출했습니다!

 

문제에서 특별하게 요구한 조건이 없어서 바로 MAX() 함수를 이용했어요!

 


SELECT  MAX(LENGTH)
   FROM   FISH_INFO 

 

 

 2  두 번째 단계에서는 CONCAT() 함수를 이용해서 문자열을 결합해주었습니다!

 

엑셀에서도 두 개 이상의 텍스트를 합치는 기능을 하는 CONCATENNATE() 함수가 있습니다!

 

이후 문제에서 요청한 것과 같이 값을 MAX_LENGTH로 칭해주었습니다.

 


SELECT  CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH

    FROM   FISH_INFO 

 

 

정답...!


 

4. 데코의 문제 풀이 후기

 

이번 문제에는 하나의 테이블에서 가장 큰 값을 구하고 문자열을 더하는 정말 LEVEL 1 같은 문제였습니다.

 

SQL에서의 CONCAT() 함수는 엑셀과 유사해서 암기해 두면 너무나도 유용하게 쓸 수 있습니다.

 

또 데이터 추출을 요청할 때 가끔 단위를 넣어달라고 하는 경우가 있어서 그런 경우에도 이용할 수 있어요!

 

이전 문제들에서 모두 다룬 것들을 이용해서

따로 코멘트할 것은 없지만

 

그래도 CONCAT함수는 많이 이용되고 유용해서 다뤄보았습니다!

혹시나 더 좋은 쿼리나 어렵게 느껴지신 부분이 있다면 댓글로 남겨주세요! 

 




오늘 문제에서 설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

 

 

LIST