한 해에 잡은 물고기 수 구하기
String, Date
한 해에 잡은 물고기 수 구하기
문제 설명
낚시앱에서 사용하는 FISH_INFO 테이블은 잡은 물고기들의 정보를 담고 있습니다.
FISH_INFO 테이블
Column name | Type | Nullable | Description |
---|---|---|---|
ID | INTEGER | FALSE | 잡은 물고기의 ID |
FISH_TYPE | INTEGER | FALSE | 물고기의 종류 (숫자로 표시) |
LENGTH | FLOAT | TRUE | 잡은 물고기의 길이(cm); 잡은 물고기의 길이가 10cm 이하일 경우 NULL입니다. |
TIME | DATE | FALSE | 물고기를 잡은 날짜 |
단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH
가 NULL이며, LENGTH
에 NULL만 있는 경우는 없습니다.
문제
FISH_INFO 테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성해주세요. 이 때 컬럼명은 ‘FISH_COUNT’ 로 지정해주세요.
풀이 과정
- 연도 필터링
- MySQL의 YEAR() 함수를 사용하여
TIME
컬럼에서 연도를 추출 - WHERE YEAR(
TIME
) = 2021 조건을 사용해서 2021년도에 잡힌 물고기만 걸러내자.
- MySQL의 YEAR() 함수를 사용하여
- 집계 함수 사용
COUNT(*)
함수를 사용하여 조건에 맞는 행의 총 개수 알 수 있겠군
- 컬럼명 지정
- alias로 결과 컬럼명을
FISH_COUNT
로 지정
- alias로 결과 컬럼명을
- 교훈
- 오라클과 다르게… 담백한 날짜 추출하기 함수… 익숙해지자… 프뤡티스..
- EXTRACT(YEAR FROM ‘DATE형식컬럼명’) ANSI 표준 방법도 기억해두는 것이 좋을 것 같다.
정답
1
2
3
4
5
6
SELECT
COUNT(*) AS FISH_COUNT
FROM
FISH_INFO
WHERE
YEAR(TIME) = 2021; -- or EXTRACT(YEAR FROM TIME) = 2021;
Tip
연도 추출 및 조건 지정
- YEAR() 함수 사용해서
TIME
컬럼에서 연도를 추출- WHERE 조건으로 2021년도에 잡힌 물고기만 필터링
집계 함수 사용
- COUNT(*) 함수를 사용하여 조건에 맞는 행의 개수 집계
개념 확인 (MySQL)
- YEAR 함수 (MySQL)
- YEAR(date) 함수는 주어진 날짜에서 연도를 숫자로 반환
- EXTRACT() 함수는 ANSI SQL 표준 함수로, Oracle, MySQL 등 다양한 DBMS에서 지원됨
EXTRACT() 함수: EXTRACT(YEAR FROM컬럼명
)- YEAR() 함수는 MySQL에서 제공하는 함수
YEAR() 함수: YEAR(컬럼명
)와 같이 간단하게 사용- GROUP 함수
- 특정 컬럼 값을 기준으로 데이터를 그룹화하여 집계 계산 수행
- COUNT(*) : 해당 그룹의 모든 행을, COUNT(
컬럼명
)은 NULL이 아닌 값 개수 계산- ORDER BY COUNT() : COUNT로 집계된 값에 따라 결과를 정렬
Useful link
This post is licensed under Park Juyoung by the author.