SQL 정리 - SUM, MAX, MIN

Rael·2022년 10월 12일
0

SQL 정리

목록 보기
2/4

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

1. 가격이 제일 비싼 식품의 정보 출력하기(Lv.2)

[문제]
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성하라.

[풀이]
PRICE 기준으로 최댓값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 DESCENDING으로 정렬 후,
LIMIT 1을 사용하여 최댓값 하나만을 SELECT하게 했다.

SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;

2. 최댓값 구하기(Lv.1)

[문제]
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성하라.

[풀이]
1번 문제와 마찬가지로, DATETIME 기준으로 최댓값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 DESCENDING으로 정렬 후,
LIMIT 1을 사용하여 최댓값 하나만을 SELECT하게 했다.

SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME DESC
LIMIT 1;

3. 최솟값 구하기(Lv.2)

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

[풀이]
이번엔 반대로, DATETIME 기준으로 최솟값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 ASCENDING으로 정렬 후,
LIMIT 1을 사용하여 최솟값 하나만을 SELECT하게 했다.

SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;

4. 동물 수 구하기(Lv.2)

[문제]
동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성하라.

[풀이]
데이터 개수를 세는 COUNT를 사용한다.
COUNT 안에 들어갈 인자 값은 어떤 column을 사용하던지 상관 없지만,
WHERE 절로 조건이 붙게 되면 유의해서 사용해야 한다.

SELECT COUNT(*)
FROM ANIMAL_INS;

5. 중복 제거하기(Lv.2)

[문제]
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성하라. 이름이 NULL인 경우는 집계하지 않으며, 중복되는 이름은 하나로 친다.

[풀이]
1.동물의 이름 개수 세기
문제 4번에서 사용한 것 같이, COUNT를 사용하여 동물 이름 개수를 조회핸다.

2.NULL 제외하고 조회
<> 'NULL'!= 'NULL'은 같은 표현으로, NULL인 경우를 제외하고 조회한다.

3.중복 제거
DISTINCT를 사용하여 중복을 제거한다.
이때, COUNT를 사용하기 전에 사용하여야 중복이 제거된 개수를 확인할 수 있다.

SELECT COUNT(DISTINCT(NAME)) as count
FROM ANIMAL_INS
WHERE NAME <> 'NULL';

0개의 댓글