■ 출처
- 코딩테스트 : MySQL / Oracle / Lv.1
■ 연습문제
17. 가장 비싼 상품 구하기
#설명: 판매 상품 중, 가장 높은 판매가격을 조회
SELECT
MAX(PRICE) AS MAX_PRICE
FROM
PRODUCT
18. 조건에 맞는 회원수 구하기
#설명: 21년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원 수 조회
#참고: WHERE(#JOINED LIKE '%2021%' AND (AGE >= 20 AND AGE <= 29)) 대체 가능
SELECT
COUNT(USER_ID) AS USERS
FROM
USER_INFO
WHERE
DATE_FORMAT(JOINED, '%Y') = '2021' AND (AGE >= 20 AND AGE <= 29)
19. 나이 정보가 없는 회원 수 구하기
COUNT() : 행의 개수를 출력하는 함수
- COUNT(*) : NULL 값 포함
- COUNT(컬럼명) : NULL 값 제외
#설명: 나이 정보가 없는 회원 수
#참고: COUNT 함수에 입력하는 값이 * 혹은 변수일때 어떤 차이를 갖는지 확인!
SELECT
(COUNT(*) - COUNT(AGE)) AS USERS
FROM
USER_INFO
20. 경기도에 위치한 식품창고 목록 출력하기
IFNULL() : 컬럼 값이 NULL을 반환할 때 다른 값으로 출력하는 함수
#설명: 경기도에 위치한 창고 ID, 이름, 주소, 냉동시설 여부 조회
#참고: NULL함수 중, IFNULL에 대한 기능 숙지!
SELECT
WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM
FOOD_WAREHOUSE
WHERE
ADDRESS LIKE '%경기도%'
ORDER BY
WAREHOUSE_ID ASC
21. 강원도에 위치한 생산공장 목록 출력하기
#설명: 강원도에 위치한 식품공자의 ID, 이름, 주소 조회
SELECT
FACTORY_ID, FACTORY_NAME, ADDRESS
FROM
FOOD_FACTORY
WHERE
ADDRESS LIKE '%강원도%'
ORDER BY
FACTORY_ID ASC
22. 최댓값 구하기
#설명: 가장 최근에 동물보호소에 들어온 동물은 언제 들어왔는지 조회
SELECT
DATETIME
FROM
ANIMAL_INS
ORDER BY
DATETIME DESC LIMIT 1
23. 이름이 있는 동물의 아이디
#설명: 동물보호소 동물 중, 이름이 있는 동물의 ID 조회
SELECT
ANIMAL_ID
FROM
ANIMAL_INS
WHERE
NAME IS NOT NULL
ORDER BY
ANIMAL_ID ASC
24. 상위 n개 레코드
#설명: 동물보호소에 가장 먼저 들어온 동물의 이름 조회
SELECT
NAME
FROM
ANIMAL_INS
ORDER BY
DATETIME ASC LIMIT 1
25. 여러 기준으로 정렬하기
#설명: 동물보호소에 들어온 동물의 ID, 이름, 보호시작일을 이름 순으로 조회
SELECT
ANIMAL_ID, NAME, DATETIME
FROM
ANIMAL_INS
ORDER BY
NAME ASC, DATETIME DESC
26. 동물의 아이디와 이름
#설명: 동물보호소에 들어온 모든 동물의 ID, 이름 출력하며, ID순으로 조회
SELECT
ANIMAL_ID, NAME
FROM
ANIMAL_INS
ORDER BY
ANIMAL_ID
27. 이름이 없는 동물의 아이디
WHERE 구문 활용한 테이블의 원하는 레코드 출력 방법
- 컬럼 A IS NULL(컬럼 A에 NULL이 존재한다)
- 컬럼 B IS NOT NULL(컬럼 B에 NULL이 존재한다)
#설명: 동물보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID 조회
SELECT
ANIMAL_ID
FROM
ANIMAL_INS
WHERE
NAME IS NULL
ORDER BY
ANIMAL_ID
28. 어린 동물 찾기
#설명: 동물보호소에 들어온 동물 중, 젊은 동물의 ID, 이름을 조회
SELECT
ANIMAL_ID, NAME
FROM
ANIMAL_INS
WHERE
INTAKE_CONDITION != 'Aged'
ORDER BY
ANIMAL_ID
29. 아픈 동물 찾기
#설명: 동물보호소에 드렁온 동물 중, 아픈 동물의 ID, 이름 조회
SELECT
ANIMAL_ID, NAME
FROM
ANIMAL_INS
WHERE
INTAKE_CONDITION = 'Sick'
ORDER BY
ANIMAL_ID ASC
30. 역순 정렬하기
ORDER BY 구문 : 원하는 순서대로 Columns을 조회하기 위해 사용되는 구문
- ASC(ASENDING) : 오름차순 정렬(작은 값부터 큰 값 순으로 정렬)
→ 숫자 : 1, 2, 3, 4, 5…
→ 알파벳 : A, B, C, D…
→ 한글 : 가, 나, 다, 라…
→ 날짜 : 과거 날짜부터 시작해서 최근 날짜로 정렬
- DESC(DESENDING) : 내림차순(큰 값부터 작은 값 순으로 정렬)
→ 오른차순 기준과 반대 개념
#설명: 동물보호소에 들어온 동물 모두의 이름, 보호시작일을 조회
SELECT
NAME, DATETIME
FROM
ANIMAL_INS
ORDER BY
ANIMAL_ID DESC
31. 모든 레코드 조회하기
#설명: 동물보호소에 들어온 동물을 ID순으로 조회
SELECT
*
FROM
ANIMAL_INS
ORDER BY
ANIMAL_ID ASC