안녕하세요! 데코입니다!
오늘은 프로그래머스 코딩테스트 연습에 있는 "잡은 물고기 중 가장 큰 물고기의 길이 구하기" 문제를 포스팅하려고 합니다!
바로 포스팅 시작할게요! :)
(출처 : 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함수는 많이 이용되고 유용해서 다뤄보았습니다!
혹시나 더 좋은 쿼리나 어렵게 느껴지신 부분이 있다면 댓글로 남겨주세요!
오늘 문제에서 설명이 어려운 부분 혹은 잘 이해가 안 가는 부분
그리고 더 궁금한 내용이 있다면
언제든지 댓글로 남겨주세요!
빠르게 궁금증을 해결해 드릴게요!
공감과 댓글은 큰 힘이 됩니다!
오늘도 블로그 방문해 주시고
포스팅 읽어주셔서 감사합니다!
'Skill Sets > SQL' 카테고리의 다른 글
[SQL] 특정 형질을 가지는 대장균 찾기(프로그래머스/MySQL/Level 1) (38) | 2024.06.30 |
---|---|
[SQL / 질문과 답변] WHERE 1=1 사용하는 이유 (41) | 2024.06.30 |
[SQL] 특정 물고기 잡은 수 구하기(프로그래머스/MySQL/Level 2) (36) | 2024.06.28 |
[SQL] 한 해에 잡은 물고기 수 구하기(프로그래머스/MySQL/Level 1) (35) | 2024.06.22 |
[SQL] 가장 큰 물고기 10마리 구하기(프로그래머스/MySQL/Level 1) (36) | 2024.06.22 |