SQL

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

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

■ 출처

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

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

 

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

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

school.programmers.co.kr

 

 

 

■ 연습문제

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