SQL 고득점 Kit - (2) SUM, MAX, MIN

프로그래머스 SQL 고득점 Kit 문제풀이 2편 (SUM, MAX, MIN 편)

문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE



1. 최대값 구하기 (LEVEL 1)

가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

풀이

SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS
  • SELECT 뒤에 MAX(DATETIME) 을 넣어, 날짜의 최대값을 구한다. 날짜는 시간이 지날수록 큰 값으로 간주되기 때문에 최대값을 활용한다.
  • AS 를 활용해서 출력될 컬럼명을 '시간' 으로 바꿔준다.



2. 최솟값 구하기 (LEVEL 2)

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

풀이

SELECT MIN(DATETIME) AS 시간 FROM ANIMAL_INS
  • 1번에서 MAX를 MIN으로 바꿔주면 된다.



3. 동물 수 구하기 (LEVEL 2)

동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.

풀이

SELECT COUNT(*) AS count FROM ANIMAL_INS
  • COUNT(*) 를 이용해서 전체 데이터의 수를 출력할 수 있다.
  • COUNT(컬럼명)을 이용해서 구할 수 있지만, 만약 그 특정 컬럼에 결측치가 존재할 경우 그 데이터를 제외하고 COUNT하기 때문에 *을 사용하는 것이 안전하다.



4. 중복 제거하기 (LEVEL 2)

동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.

풀이

SELECT COUNT( DISTINCT NAME ) AS count FROM ANIMAL_INS
  • DISTINCT 옵션을 이용할 경우 중복 값을 제거한 유일한 값만을 COUNT할 수 있다.
  • 이름 열의 결측치인 경우 집계하지 않기 때문에 COUNT() 함수 안에 NAME이라는 특정 컬럼명을 집어넣는다.

좋은 웹페이지 즐겨찾기