일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 정수론
- 다이나믹프로그래밍
- 사칙연산
- 프로그래머스코딩테스트
- 수학
- 구현
- Image Classification
- 그리디
- SQL
- 소수판정
- 프로그래머스연습문제
- 큐
- 백준
- C++
- C
- 정렬
- MySQL
- 이진탐색
- 논문구현
- 백준알고리즘
- C언어
- 자료구조
- 프로그래머스sql
- 프로그래머스
- 논문리뷰
- 문자열
- 해시를사용한집합과맵
- 그리디알고리즘
- 이분탐색
- 브루트포스알고리즘
- Today
- Total
초보 개발자의 이야기, 릿허브
[MySQL] 프로그래머스 SQL 여러 기준으로 정렬하기 본문
1. 문제이해
https://programmers.co.kr/learn/courses/30/lessons/59404
코딩테스트 연습 - 여러 기준으로 정렬하기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
위와 같은 정보를 가진 ANIMAL_INS 테이블에서
동물의 아이디, 이름, 보호 시작일을 이름 순으로 조회하는 것이 목표이다.
단, 이름이 같은 동물인 경우에는 보호를 나중에 시작한 동물을 먼저 보여주어야한다.
2. 문제풀이
ANIMAL_INS 테이블에서, 동물의 아이디, 이름, 보호 시작일을 추출하는 것이 목표이다.
단, 이름 순으로 먼저 조회하되, 이름이 같을 경우 보호시작일을 기준으로 보여주어야한다.
보호시작일이 늦는 동물부터 보여주어야하므로,
이름은 오름차순, 보호시작일은 내림차순으로 조회해야한다.
3. 정답
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC
SELECT : ANIMAL_IN, NAME, DATETIME 값을 조회
FROM : ANIMAL_INS에서
ORDER BY : NAME(이름) 순으로 먼저 조회하되,
NAME 값이 같으면 DATETIME(보호시작일) 순으로 내림차순 조회
해당 문제에서는 이름이 같은 경우, 보호시작일이 최근(늦는)인 순서대로 조회해야한다.
이러한 경우, 우선 NAME(이름) 컬럼을 기준으로 정렬해야 하므로 먼저 쓰고,
동일한 이름이 나오는 경우, 뒤에 DATETIME(보호시작일) 값을 기준으로
DESC(내림차순) 조회하면 알맞은 결과가 나오게 된다.
SQL 쿼리문에서 ORDER BY 구문은 ","를 기준으로 여러가지 정렬 조건 설정이 가능하다.
정렬조건이 여러 개인 경우, 앞에 있는 정렬조건을 기준으로 하되,
앞에 있는 정렬조건 후 같은 값이 발생할 경우, 뒤에 있는 정렬조건을 따르도록 한다.
'코딩테스트 > 📒 SQL' 카테고리의 다른 글
[MySQL] 프로그래머스 SQL 최댓값 구하기 (0) | 2021.10.04 |
---|---|
[MySQL] 프로그래머스 SQL 상위 n개 레코드 (0) | 2021.09.28 |
[MySQL] 프로그래머스 SQL 동물의 아이디와 이름 (0) | 2021.09.28 |
[MySQL] 프로그래머스 SQL 어린 동물 찾기 (0) | 2021.09.28 |
[MySQL] 프로그래머스 SQL 아픈 동물 찾기 (0) | 2021.09.28 |