Post

한 해에 잡은 물고기 수 구하기

String, Date

한 해에 잡은 물고기 수 구하기


문제 설명

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


FISH_INFO 테이블

Column nameTypeNullableDescription
IDINTEGERFALSE잡은 물고기의 ID
FISH_TYPEINTEGERFALSE물고기의 종류 (숫자로 표시)
LENGTHFLOATTRUE잡은 물고기의 길이(cm); 잡은 물고기의 길이가 10cm 이하일 경우 NULL입니다.
TIMEDATEFALSE물고기를 잡은 날짜

단, 잡은 물고기의 길이가 10cm 이하일 경우에는 LENGTH가 NULL이며, LENGTH에 NULL만 있는 경우는 없습니다.




문제

FISH_INFO 테이블에서 2021년도에 잡은 물고기 수를 출력하는 SQL 문을 작성해주세요. 이 때 컬럼명은 ‘FISH_COUNT’ 로 지정해주세요.




풀이 과정
  1. 연도 필터링
    • MySQL의 YEAR() 함수를 사용하여 TIME 컬럼에서 연도를 추출
    • WHERE YEAR(TIME) = 2021 조건을 사용해서 2021년도에 잡힌 물고기만 걸러내자.
  2. 집계 함수 사용
    • COUNT(*) 함수를 사용하여 조건에 맞는 행의 총 개수 알 수 있겠군
  3. 컬럼명 지정
    • alias로 결과 컬럼명을 FISH_COUNT로 지정
  • 교훈
    • 오라클과 다르게… 담백한 날짜 추출하기 함수… 익숙해지자… 프뤡티스..
    • 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로 집계된 값에 따라 결과를 정렬




한 해에 잡은 물고기 수 구하기

This post is licensed under Park Juyoung by the author.

Trending Tags