SQL

[실무]프로그래머스 MySQL 기출문제 모음 Lv.1.2

노력하는 백곰 2024. 6. 5. 17:42

■ 출처

- 코딩테스트 : MySQL / Oracle / Lv.1

https://school.programmers.co.kr/learn/challenges?order=recent&languages=mysql%2Coracle&page=1&levels=1

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

 

 

■ 연습문제

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