뚜당탕탕
[프로그래머스 / MySQL] SELECT 모음 / SUM, MAX, MIN 모음 본문
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
SELECT - ① 모든 레코드 조회하기
👇 문제 설명
동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
👇 문제 풀이
초록색 배경 부분이 문제에서 요구하는 부분이다. 동물 보호소에 들어온 모든 동물의 정보를 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
ANIMAL_ID 순으로 정렬하기 위해 ORDER BY 절을 이용한다.
오름차순이므로 ASC 를 이용한다. (내림차순은 DESC)
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;
SELECT - ② 역순 정렬하기
👇 문제 설명
동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
..이하 생략
👇 문제 풀이
SELECT NAME AS "NAME", DATETIME AS "DATETIME"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
SELECT 문에서 `AS` 를 이용하여 별칭을 지정할 수 있다. 그러면 출력문에서 컬럼명이 별칭으로 변경되어 출력된다.
ANIMAL_ID 역순으로 정렬이므로 ORDER BY 절을 이용한다. 역순 또는 내림차순 정렬일 경우에는 DESC 이다.
SELECT - ③ 아픈 동물 찾기
👇 문제 설명
동물 보호소에 들어온 동물 중 아픈 동물1(INTAKE_CONDITION이 Sick 인 경우를 뜻함)의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
예시
예를 들어 ANIMAL_INS 테이블이 다음과 같다면
이 중 아픈 동물은 Miller와 Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.
👇 문제 풀이
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "Sick"
ORDER BY ANIMAL_ID ASC;
SELECT - ④ 어린 동물 찾기
동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != "Aged"
ORDER BY ANIMAL_ID ASC;
SELECT - ⑤ 동물의 아이디와 이름
동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;
SELECT - ⑥ 여러 기준으로 정렬하기
동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC;
다중 정렬은 ORDER BY 절에서 왼쪽을 기준으로 차례대로 정렬되는 것을 생각하면 된다.
이름순으로 정렬하는 NAME ASC 를 가장 왼쪽에 작성하고, 그 다음에 정렬할 보호일자를 최신 기준으로 정렬하도록 작성한다.
SELECT - ⑦ 상위 n개 레코드
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1;
LIMIT n : 상위 n개의 레코드만 보여주겠다
SUM, MAX, MIN - ① 최댓값 구하기
가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT MAX(DATETIME) AS "시간"
FROM ANIMAL_INS
SUM, MAX, MIN - ② 최솟값 구하기
동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT MIN(DATETIME) AS "시간"
FROM ANIMAL_INS
SUM, MAX, MIN - ③ 동물 수 구하기
동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT COUNT(ANIMAL_ID)
FROM ANIMAL_INS
SUM, MAX, MIN - ④ 중복 제거하기
동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
SELECT COUNT(DISTINCT(NAME))
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
COUNT() : 개수 세는 함수
DISTINCT() : 중복된 값을 제거해주는 함수, NULL 은 제거되지 않는다.
WHERE절 : 조건식
IS NOT NULL : NULL 이 아닌
끝~ 오늘은 여기까지~
'💯 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Python] 해시(Hash) - 위장 (0) | 2021.10.26 |
---|---|
[프로그래머스 / MySQL] `IS NULL` 모음 (0) | 2021.10.25 |
[프로그래머스 / JAVA] (탐욕법 - Greedy) 체육복 (0) | 2021.10.18 |
[프로그래머스 / Python] 소수 만들기 (0) | 2021.10.18 |
[프로그래머스 / Python ] (완전탐색) 모의고사 (0) | 2021.10.16 |