[문제]
FOOD_PRODUCT 테이블에서 가격이 제일 비싼 식품의 식품 ID, 식품 이름, 식품 코드, 식품분류, 식품 가격을 조회하는 SQL문을 작성하라.
[풀이]
PRICE 기준으로 최댓값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 DESCENDING으로 정렬 후,
LIMIT 1을 사용하여 최댓값 하나만을 SELECT하게 했다.
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;
[문제]
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성하라.
[풀이]
1번 문제와 마찬가지로, DATETIME 기준으로 최댓값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 DESCENDING으로 정렬 후,
LIMIT 1을 사용하여 최댓값 하나만을 SELECT하게 했다.
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME DESC
LIMIT 1;
[문제]
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성하라.
[풀이]
이번엔 반대로, DATETIME 기준으로 최솟값을 구하는 문제이다.
따라서 ORDER BY를 사용하여 ASCENDING으로 정렬 후,
LIMIT 1을 사용하여 최솟값 하나만을 SELECT하게 했다.
SELECT DATETIME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
[문제]
동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성하라.
[풀이]
데이터 개수를 세는 COUNT를 사용한다.
COUNT 안에 들어갈 인자 값은 어떤 column을 사용하던지 상관 없지만,
WHERE 절로 조건이 붙게 되면 유의해서 사용해야 한다.
SELECT COUNT(*)
FROM ANIMAL_INS;
[문제]
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 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';