1. 문제목적
데이터를 정렬하고 상위 N개의 데이터를 추출하는 방법을 학습하는 것이다.
- ORDER BY: 데이터를 정렬하는 방법.
- LIMIT: 특정 개수만큼의 데이터를 추출하는 방법.
- NULL 처리: NULL 값을 제외하거나 포함하는 방법.
- 우선순위 결정: 동일한 값이 있을 때 정렬 순서를 조정하는 방법.
2. 핵심개념
ORDER BY
ORDER BY는 데이터를 특정 컬럼을 기준으로 정렬하는 데 사용된다.
- 기본적으로 오름차순(ASC) 정렬을 수행하며, 내림차순(DESC)으로도 정렬 가능하다.
- 여러 컬럼을 기준으로 정렬할 수 있다.
SELECT * FROM table_name ORDER BY column_name [ASC|DESC];
LIMIT
LIMIT은 결과에서 반환할 행의 개수를 제한하는 데 사용된다. 사용법:
SELECT * FROM table_name LIMIT N;
여기서 N은 반환할 최대 행의 개수이다.
NULL 처리
SQL에서는 NULL 값과의 비교가 일반 연산자로 불가능하므로 IS NULL 또는 IS NOT NULL 조건을 사용한다.
우선순위 정렬
ORDER BY에서 여러 기준을 조합하여 정렬할 수 있다.
ORDER BY column1 DESC, column2 ASC;
위와 같이 첫 번째 기준(column1)으로 정렬한 후, 동일한 값에 대해 두 번째 기준(column2)으로 정렬한다.
3. 문제해결 절차
- 데이터 분석:
- FISH_INFO 테이블에서 가장 큰 물고기 10마리의 길이와 ID를 반환해야 한다.
- 단, LENGTH가 NULL인 경우는 제외한다.
- 필터링 조건:
- LENGTH가 NULL인 경우 제외하기 위해 WHERE LENGTH IS NOT NULL 조건을 추가한다.
- 정렬 기준:
- 물고기의 길이(LENGTH)를 기준으로 내림차순 정렬(DESC)한다.
- 길이가 동일한 경우, ID를 오름차순으로 정렬하여 우선순위를 결정한다.
- 결과 제한:
- LIMIT 10을 사용해 상위 10개의 데이터를 반환한다.
- 결과 출력:
- SELECT 절에서 ID와 LENGTH 컬럼을 출력한다.
4. 코드작성
-- 가장 큰 물고기 10마리를 구하는 쿼리
SELECT
ID, -- 물고기의 ID
LENGTH -- 물고기의 길이
FROM
FISH_INFO -- 데이터를 조회할 테이블
WHERE
LENGTH IS NOT NULL -- 길이가 NULL인 데이터를 제외
ORDER BY
LENGTH DESC, -- 물고기의 길이를 기준으로 내림차순 정렬
ID ASC -- 길이가 같을 경우 ID를 기준으로 오름차순 정렬
LIMIT
10; -- 상위 10개의 데이터만 추출
5. 코드분석
SELECT 절
- SELECT ID, LENGTH: FISH_INFO 테이블에서 ID와 LENGTH 컬럼을 선택하여 출력한다.
FROM 절
- FROM FISH_INFO: 데이터를 조회할 테이블을 지정한다.
WHERE 절
- WHERE LENGTH IS NOT NULL
- LENGTH 값이 NULL인 데이터를 제외하여 유효한 데이터를 필터링한다.
ORDER BY 절
- ORDER BY LENGTH DESC: 물고기의 길이를 기준으로 내림차순 정렬한다.
- ID ASC: 동일한 길이일 경우, ID를 기준으로 오름차순 정렬하여 우선순위를 결정한다.
LIMIT 절
- LIMIT 10: 상위 10개의 데이터만 결과로 반환한다.
'SQL Kit > SELECT' 카테고리의 다른 글
3월에 태어난 여성 회원 목록 출력하기 [ 프로그래머스 | SQL Kit | Level 2 ] (0) | 2025.03.04 |
---|---|
특정 형질을 가지는 대장균 찾기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
잔챙이 잡은 수 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
Python 개발자 찾기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |
조건에 맞는 회원 수 구하기 [ 프로그래머스 | SQL Kit | Level 1 ] (0) | 2025.03.03 |