프로그래머스 Sql 고득점 Kit Sum, Min, Max 문제

최댓값 구하기 PGs#59415

코드 보기
SELECT DISTINCT DATETIME
FROM ANIMAL_INS
WHERE DATETIME >= ALL(SELECT DATETIME FROM ANIMAL_INS)

☝ 입력 형식

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

🤞 출력 형식

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

🤟 구현 과정

  1. 동물의 정보중 보호 시작일만 요구하므로, SELECT DATETIME를 사용하였다.

  2. 그러나, 같은 시각에 보호가 시작된 동물이 있을 수 있으므로, SELECT DISTINCT DATETIME으로 변경하였다.

  3. ANIMAL_INS라는 테이블에 모든 정보가 들어있으므로, FROM ANIMAL_INS를 사용하였다.

  4. DATETIME이 가장 큰 경우를 찾는 것이므로, 다른 모든 DATETIME보다 크거나 같아야 한다. 그러므로 subquery를 이용하여WHERE DATETIME >= ALL(SELECT DATETIME FROM ANIMAL_INS)을 사용하였다.



최솟값 구하기 PGs#59038

코드 보기
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1

☝ 입력 형식

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

🤞 출력 형식

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

🤟 구현 과정

  1. 동물의 정보중 보호 시작일만 요구하므로, SELECT DATETIME를 사용하였다.

  2. ANIMAL_INS라는 테이블에 모든 정보가 들어있으므로, FROM ANIMAL_INS를 사용하였다.

최댓값 구하기와는 다른 방법으로 문제를 해결하고 싶어서 다른 로직으로 구현하였다. DATETIME으로 정렬한 후, 가장 큰 한 가지만 출력하기로 했다.

  1. DATETIME을 오름차순으로 정렬하기 위해, ORDER BY DATETIME을 사용하였다.

  2. DATETIME이 가장 작은 한 가지만 출력하기 위해, LIMIT 1을 사용하였다.



동물 수 구하기 PGs#59406

코드 보기
SELECT COUNT(*)
FROM ANIMAL_INS

☝ 입력 형식

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

🤞 출력 형식

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

🤟 구현 과정

  1. 동물의 총 마리 수를 요구하므로, SELECT COUNT(*)를 사용하였다.

  2. ANIMAL_INS라는 테이블에 모든 정보가 들어있으므로, FROM ANIMAL_INS를 사용하였다.



중복 제거하기 PGs#59408

코드 보기
SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS

☝ 입력 형식

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

🤞 출력 형식

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

🤟 구현 과정

  1. 동물의 이름의 가짓수를 요구하므로, SELECT COUNT(NAME)를 사용하였다.

  2. 하지만, 중복되는 이름은 하나로 치므로, NAMEDISTINCT NAME으로 바꾸어주었다.

  3. ANIMAL_INS라는 테이블에 모든 정보가 들어있으므로, FROM ANIMAL_INS를 사용하였다.

댓글남기기