1. SELECT
(1) 모든 레코드 조회하기
SELECT *
FROM ANIMAL_INS;
(2) 역순 정렬하기
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
(3) 아픈 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION='SICK'
ORDER BY ANIMAL_ID;
(4) 어린 동물 찾기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION!='Aged'
ORDER BY ANIMAL_ID;
(5) 동물의 아이디와 이름
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
(6) 여러 기준으로 정렬하기
- 이름순으로 조회 , 단 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 함
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;
(7) 상위 N개 레코드
- 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성
SELECT NAME
FROM ANIMAL_INS
WHERE DATETIME=(
SELECT MIN(DATETIME)
FROM ANIMAL_INS
);
2. SUM, MAX, MIN
(1) 최댓값 구하기
- 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성
SELECT MAX(DATETIME) AS 시간
FROM ANIMAL_INS;
(2) 최솟값 구하기
- 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성
SELECT MIN(DATETIME) AS 시간
FROM ANIMAL_INS;
(3) 동물 수 구하기
- 동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성
SELECT COUNT(*) AS count
FROM ANIMAL_INS;
(4) 중복 제거하기
- 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다.
SELECT COUNT(DISTINCT NAME)
FROM ANIMAL_INS
WHERE NAME IS NOT NULL;
3. GROUP BY
(1) 고양이와 개는 몇 마리 있을까
- 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
HAVING ANIMAL_TYPE IN ('Cat', 'Dog')
ORDER BY ANIMAL_TYPE ASC;
(2) 동명 동물 수 찾기
- 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING NAME IS NOT NULL AND COUNT>1
ORDER BY NAME;
(3) 입양 시각 구하기 (1)
- 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 9 AND 19
GROUP BY HOUR
ORDER BY HOUR;
4. IS NULL
(1) 이름 없는 동물의 아이디
- 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL;
(2) 이름 있는 동물의 아이디
- 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID;
(3) NULL 처리하기
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") As NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
5. String, Date
(1) 루시와 엘라 찾기
- 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요.
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty")
ORDER BY ANIMAL_ID;
(2) 이름에 el이 들어가는 동물 찾기
- 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME like "%el%" AND ANIMAL_TYPE="Dog"
ORDER BY NAME;
(3) 중성화 여부 파악하기
- 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.
SELECT ANIMAL_ID, NAME,
CASE
WHEN SEX_UPON_INTAKE Like '%Neutered%' or SEX_UPON_INTAKE Like '%Spayed%'
THEN 'O'
ELSE 'X'
END as 중성화
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
(4) DATETIME에서 DATE로 형 변환
- ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 SQL문을 작성해주세요. 이때 결과는 아이디 순으로 조회
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME,"%Y-%m-%d") AS 날짜
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
'알고리즘' 카테고리의 다른 글
프로그래머스 - 직사각형 별찍기(C++) (0) | 2021.05.05 |
---|---|
최대 부분 증가 수열 [DP] (0) | 2021.04.12 |
계단오르기 [DP] (0) | 2021.04.06 |
네트워크 선 자르기 [DP] (0) | 2021.03.29 |
90. 라이온킹 심바[BFS] (0) | 2021.03.24 |