FISH_INFO
테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성해주세요. 이 때 컬럼명은 'FISH_COUNT' 로 지정해주세요.
# FISH_INFO 테이블에서 2021년도에 잡은 물고기 수를 출력
# 이 때 컬럼명은 'FISH_COUNT' 로 지정
## 답안1 ##
SELECT COUNT(ID) AS FISH_COUNT
FROM FISH_INFO
WHERE YEAR(TIME) = '2021'
## 답안2 ##
SELECT SUM(FISH_TYPE) AS FISH_COUNT
FROM FISH_INFO
WHERE CAST(TIME AS CHAR) LIKE '2021%'
두 가지 방법으로 풀었다. 첫번째는 datetime형인 컬럼 time
에서 년도만 추출해 그것이 2021과 같은지 확인하는 방식으로 쿼리문을 작성했다. 두번째는 어제 문제풀면서 배운 CAST()
를 사용해 TIME의 데이터타입을 datetime에서 char으로 변환해주었다. 문제를 푼지 한 달이 다 된 지금에서야 알아챈 사실이지만, 굳이 TIME속성을 형변환시키지 않고 LIKE연산자를 사용해도 정상실행되었다. 그 땐 왜 그랬을까?
# CAST()안써도 된다.
SELECT COUNT(ID) AS FISH_COUNT
FROM FISH_INFO
WHERE TIME LIKE '2021%'
+처음에 답안을 제출했을 때, 오답처리가 되었는데 다시 확인해봤더니 FISH_TYPE을 잡은 물고기 수라고 착각해서 틀렸다. 앞으로 문제를 제대로 읽어야겠다.