프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
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 |
최댓값 구하기 (LEVEL 1)
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT MAX(DATETIME) FROM ANIMAL_INS;
SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1;
최댓값은 MAX() 함수를 써서 간단하게 조회할 수 있다.
또 다른 방법으로는 DATETIME을 역순으로 정렬한 다음에 제일 첫 번째 데이터를 조회해도 최댓값을 구할 수 있다.
최솟값 구하기 (LEVEL 2)
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT MIN(DATETIME) FROM ANIMAL_INS;
최솟값은 위와 반대로 MIN() 함수로 구할 수 있다. 역시 정렬 후 LIMIT을 사용해서 해결할 수 있다. (왜 LEVEL 2인지 모르겠다...)
동물 수 구하기 (LEVEL 2)
동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT COUNT(*) FROM ANIMAL_INS;
숫자를 셀 때에는 COUNT() 함수를 이용하면 된다. * 대신에 ANIMAL_ID와 같은 컬럼 명을 넣어도 된다.
중복 제거하기 (LEVEL 2)
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL;
DISTINCT를 컬럼 명 앞에 붙이면 중복된 값을 제외하고 조회한다. NULL인 경우는 집계하지 않으므로 NAME이 NULL이 아닐 때의 DISTINCT 한 NAME을 COUNT()해주면 된다.
프로그래머스 SQL 고득점 Kit의 SUM, MAX, MIN 문제들이다. 집계 함수를 얼마나 잘 활용하는지 시험하는 문제들 위주다. 별거 아닌 것 같지만 실제 SQL문을 사용할 때 집계 함수는 엄청 많이 쓰인다, 특히 COUNT()나 MAX()는 유독 많이 쓰이니까 꼭 기억하자.
'SQL' 카테고리의 다른 글
[프로그래머스 SQL 고득점 Kit] GROUP BY (0) | 2022.04.08 |
---|---|
[프로그래머스 SQL 고득점 Kit] SELECT (0) | 2022.03.28 |
SQL 개념정리 (0) | 2022.03.27 |