■ 출처
- 코딩테스트 : MySQL / Oracle / Lv.2
■ 연습문제
24. 3월에 태어난 여성 회원 목록 출력하기
#설명: 생일이 3월인 여성 회원의 ID, 이름, 성별, 생년월일을 조회
SELECT
MEMBER_ID,
MEMBER_NAME,
GENDER,
DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTH
FROM
MEMBER_PROFILE
WHERE
(GENDER = 'W')
AND (DATE_OF_BIRTH LIKE '%-03-%')
AND (TLNO IS NOT NULL)
ORDER BY
MEMBER_ID ASC
25. 가격이 제일 비싼 식품의 정보 출력하기
#설명: 가격이 제일 비싼 식품의 ID, 이름, 코드, 종류, 가격을 조회
SELECT
*
FROM
FOOD_PRODUCT
ORDER BY
PRICE DESC
LIMIT
1
26. DATETIME에서 DATE로 형 변환
#설명: 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회
SELECT
ANIMAL_ID,
NAME,
DATE_FORMAT(DATETIME, '%Y-%m-%d') AS '날짜'
FROM
ANIMAL_INS
GROUP BY
ANIMAL_ID
27. 입양 시각 구하기(1)
#설명: 보호소의 가장 활발한 입양 시간대 확인을 위해 09:00~19:59까지 시간대별 입양 건수를 조회
#참고: COUNT() 함수에 컬럼을 지정할 경우, NULL을 제외하고 갯수를 측정하므로, NULL 존재 여부를 고려하자
SELECT
HOUR(DATETIME) AS HOUR,
COUNT(DATETIME) AS COUNT
FROM
ANIMAL_OUTS
GROUP BY
HOUR
HAVING
(HOUR >= 9) AND (HOUR <= 19)
ORDER BY
HOUR ASC
28. NULL 처리하기
IFNULL() : 컬럼 값이 NULL을 반환할 때 다른 값으로 출력하는 함수
#설명: 입양 게시판에 정보를 게시하려할 때 동물의 생물 종, 이름, 성별, 중성화 여부를 조회
SELECT
ANIMAL_TYPE,
IFNULL(NAME, 'No name'),
SEX_UPON_INTAKE
FROM
ANIMAL_INS
29. 중성화 여부 파악하기
#설명: 보호소 동물의 중성화 여부를 확인하고자, Neutered/Spayed 단어가 들어간 동물의 ID, 이름, 중성화 여부를 조회
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 ASC
30. 중복 제거하기
DISTINCT : 중복된 행을 제외하여 컬럼 결과를 조회
#설명: 보소호에 들어온 동물의 이름은 몇 개인지 조회
SELECT
COUNT(DISTINCT NAME) AS count
FROM
ANIMAL_INS
31. 동물 수 구하기
COUNT(*) : NULL 값을 포함한 행 수를 출력하는 함수
COUNT(컬럼) : NULL 값을 제외한 행 수를 출력하는 함수
#설명: 보호소에 동물이 몇 마리 들어왔는지 조회
SELECT
COUNT(ANIMAL_TYPE) AS count
FROM
ANIMAL_INS
32. 이름에 el이 들어가는 동물 찾기
#설명: 보호소에 돌아가신 할머니가 기르던 개를 찾고자 'el'이 들어간 개의 아이디와 이름을 조회
SELECT
ANIMAL_ID, NAME
FROM
ANIMAL_INS
WHERE
(ANIMAL_TYPE = 'Dog') AND (NAME LIKE '%EL%')
ORDER BY
NAME ASC
33. 루시와 엘라 찾기
IN : 특정 컬럼이 포함되어 있는지 여부를 조회하고 싶을 때 사용하는 함수
#설명: 보호소의 동물 중, Lucy/Ella/Pickle/Rogan/Sabrina/Mitty인 동물 ID, 이름, 성별, 중성화 여부 조회
SELECT
ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM
ANIMAL_INS
WHERE
NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
34. 동명 동물 수 찾기
#설명: 보호소에 들어온 동물 이름 중에서 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회
SELECT
NAME,
COUNT(NAME) AS COUNT
FROM
ANIMAL_INS
GROUP BY
NAME
HAVING
COUNT(NAME) >= 2
ORDER BY
NAME ASC
35. 고양이와 개는 몇 마리 있을까
#설명: 보호소에 들어온 동물 중, 고양이와 개가 각각 몇 마리인지 조회
SELECT
ANIMAL_TYPE,
COUNT(ANIMAL_TYPE) AS count
FROM
ANIMAL_INS
GROUP BY
ANIMAL_TYPE
ORDER BY
ANIMAL_TYPE ASC
36. 최솟값 구하기
#설명: 보소호에 가장 먼저 들어온 동물은 언제 들어왔는지 조회
SELECT
MIN(DATETIME) AS '시간'
FROM
ANIMAL_INS