FISH_INFO 테이블에서 잡은 물고기 중 가장 큰 물고기의 길이를 cm 단위로 출력하는 문제이다. 출력 형식은 숫자cm (예: 50cm)이다.
| 테이블 | 주요 컬럼 |
|---|---|
FISH_INFO | FISH_ID, FISH_TYPE, LENGTH, TIME |
가장 큰 길이를 구해야 하므로 MAX(LENGTH)를 써야 한다. 이전에 풀었던 가장 비싼 상품 구하기, 최댓값 구하기와 동일한 MAX() 패턴이다.
추가로 결과값 뒤에 cm를 붙여서 출력해야 한다. 숫자 뒤에 문자열을 붙일 때는 CONCAT() 함수를 사용한다.
CONCAT(MAX(LENGTH), 'cm') -- 예: 50 → 50cm
구체적으로 정리한 풀이 흐름:
MAX(LENGTH)로 가장 큰 길이 집계CONCAT(MAX(LENGTH), 'cm')으로 단위 붙이기AS MAX_LENGTH로 컬럼명 지정SELECT CONCAT(MAX(LENGTH), 'cm') AS MAX_LENGTH
FROM FISH_INFO
CONCAT()은 여러 값을 하나의 문자열로 이어붙이는 함수이다.
CONCAT(값1, 값2, 값3, ...)
자주 쓰는 패턴:
CONCAT(MAX(LENGTH), 'cm') -- 숫자 + 단위: 50cm
CONCAT(FIRST_NAME, ' ', LAST_NAME) -- 이름 합치기: John Doe
CONCAT('[', CATEGORY, ']') -- 텍스트 감싸기: [인문]
구분자를 넣어야 할 때는 CONCAT_WS()를 쓸 수 있다.
CONCAT_WS('-', '2024', '01', '01') -- 2024-01-01
CONCAT_WS(', ', CITY, COUNTRY) -- Seoul, Korea
한 가지 주의할 점은 CONCAT()은 인자 중 하나라도 NULL이면 결과가 NULL이 된다는 것이다. 이럴 때는 IFNULL()로 NULL을 대체값으로 바꿔줘야 한다.
CONCAT('hello', IFNULL(NAME, '')) -- NULL이면 빈 문자열로 대체
| 함수 | 용도 |
|---|---|
CONCAT(a, b) | a와 b를 이어붙이기 |
CONCAT_WS(구분자, a, b) | 구분자를 사이에 넣고 이어붙이기 |
IFNULL(값, 대체값) | NULL이면 대체값으로 바꾸기 |