[프로그래머스] SQL 고득점 Kit - SUM, MAX, MIN편

boomboom·2021년 7월 23일
0
post-thumbnail

안녕하세요. 붐붐입니다.

이번 포스팅에서는 제가 풀어본 프로그래머스 SQL 고득점 Kit - SUM, MAX, MIN 문제들의 풀이를 공유해보고자 합니다.


출처: 프로그래머스 코딩테스트 연습 - SQL 고득점 Kit

https://programmers.co.kr/learn/challenges?tab=sql_practice_kit


사용되는 테이블

ANIMAL_INS

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE
  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 보호 시작일
  • INTAKE_CONDITION: 보호 시작 시 상태
  • NAME: 이름
  • SEX_UPON_INTAKE: 성별 및 중성화 여부

ANIMAL_OUTS

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_OUTCOMEVARCHAR(N)FALSE
  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 입양일
  • NAME: 이름
  • SEX_UPON_OUTCOME: 성별 및 중성화 여부

[1번] 최댓값 구하기

가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A399552Dog2013-10-14 15:38:00NormalJackNeutered Male
A379998Dog2013-10-23 11:42:00NormalDiscipleIntact Male
A370852Dog2013-11-03 15:04:00NormalKatieSpayed Female
A403564Dog2013-11-18 17:03:00NormalAnnaSpayed Female

가장 늦게 들어온 동물은 Anna이고, Anna는 2013-11-18 17:03:00에 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

시간
2013-11-18 17:03:00

풀이

SELECT MAX(DATETIME) AS '시간'
FROM ANIMAL_INS;

[2번] 최솟값 구하기

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A399552Dog2013-10-14 15:38:00NormalJackNeutered Male
A379998Dog2013-10-23 11:42:00NormalDiscipleIntact Male
A370852Dog2013-11-03 15:04:00NormalKatieSpayed Female
A403564Dog2013-11-18 17:03:00NormalAnnaSpayed Female

가장 먼저 들어온 동물은 Jack이고, Jack은 2013-10-14 15:38:00에 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

시간
2013-10-14 15:38:00

풀이

SELECT MIN(DATETIME) AS '시간'
FROM ANIMAL_INS;

[3번] 동물 수 구하기

동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.
예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A399552Dog2013-10-14 15:38:00NormalJackNeutered Male
A379998Dog2013-10-23 11:42:00NormalDiscipleIntact Male
A370852Dog2013-11-03 15:04:00NormalKatieSpayed Female
A403564Dog2013-11-18 17:03:00NormalAnnaSpayed Female

동물 보호소에 들어온 동물은 4마리입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

count
4

풀이

SELECT COUNT(ANIMAL_ID) AS 'count'
FROM ANIMAL_INS;

[4번] 중복 제거하기

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

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE
A562649Dog2014-03-20 18:06:00SickNULLSpayed Female
A412626Dog2016-03-13 11:17:00Normal*SamNeutered Male
A563492Dog2014-10-24 14:45:00Normal*SamNeutered Male
A513956Dog2017-06-14 11:54:00Normal*SweetieSpayed Female

보호소에 들어온 동물의 이름은 NULL(없음), Sam, Sam, *Sweetie입니다. 이 중 NULL과 중복되는 이름을 고려하면, 보호소에 들어온 동물 이름의 수는 2입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

count
2

풀이

SELECT COUNT(DISTINCT NAME) AS 'count'
FROM ANIMAL_INS;

profile
오늘도 붐붐

0개의 댓글