TIL / 프로그래머스 MySQL 문제풀기

Today 공부

  • MySQL 프로래머스 문제 풀기 (Level1)

SELECT 실행 순서

-작성순서실행순서실행해석
1SELECTFROM어느 테이블 대상으로 접근 할 것인가
2FROMWHERE해당 테이블에서 조건에 만족하는 레코드(row) 조회
3WHEREGROUP BY레코드(row)들을 기준으로 그룹화, 그룹은 하나의 row
4GROUP BYHAVING생성된 그룹 중 특정조건 필터
5HAVINGSELECT필터된 결과에 맞는 필드조회
6ORDER BYORDER BY필드를 기준으로 지정된 방식으로 정렬
7LIMITLIMIT입력된 개수 위에서부터 출력

1. 모든 레코드 조회하기

SELECT * from ANIMAL_INS

기본 테이블 구조

  • ANIMAL_ID : 각 동물의 아이디
  • ANIMAL_TYPE : 생물 종
  • DATETIME : 보호 시작 일
  • INTAKE_CONDITION : 보호 시작 시 상태
  • NAME : 이름
  • SEX_UPON_INTAKE : 성별 및 중성화 여부

2. 역순 정렬하기

SELECT NAME,DATETIME //출력 할 레코드
FROM ANIMAL_INS // 조회 할 테이블
ORDER BY ANIMAL_ID DESC // 정렬 지정 DESC : 역순

3. 아픈 동물 찾기


SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick' // 조건주기
ORDER BY ANIMAL_ID

4.어린 동물 찾기

  • 동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION <> 'Aged' // 조건주기

// 기존 테이블을 확인하면서 어떤 조건을 줘야하는지 확인해야 했다

5. 동물의 아이디와 이름

  • 동물 보호소에 들어온 모든 동물의 아이디와 이름을 ANIMAL_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

6. 여러 기준으로 정렬하기

  • 동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.
    1. 이름을 사전 순으로 정렬하면 다음과 같으며, 'Jewel', 'Raven', 'Sugar'
    2. 'Raven'이라는 이름을 가진 개와 고양이가 있으므로, 이 중에서는 보호를 나중에 시작한 개를 먼저 조회합니다.

SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC // 두가지 기준으로 정렬

7. 상위 n개 레코드

  • 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME // 들어온 날짜로 정렬
LIMIT 1 // 상위 n개 레코드 조회 구문

8. 이름이 없는 동물의 아이디

  • 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL // 공백 외에도 NULL로 채워져 있는 값도 IS NULL로 찾아야 한다 
ORDER BY ANIMAL_ID

9. 이름이 있는 동물의 아이디

  • 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL // NOT NULL 사용 
ORDER BY ANIMAL_ID

10. 최댓값 구하기

  • 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.
SELECT MAX(DATETIME)  // 집계함수 MAX를 사용해서 최대 값 구하기
FROM ANIMAL_INS

마치며,

이전에 배웠던 MySQL 복습으로 프로그래머스의 1단계 문제들을 풀어보았다.
배웠던 내용이여도 다시 확인하지 않으니 헷갈리는 부분도 있었지만 검색해가며 다시 내용을 익히게 되어 금방 풀 수 있었다.
잊지 않도록 다른 Level의 문제도 틈틈히 풀어봐야겠다

좋은 웹페이지 즐겨찾기