준호씨의 블로그
Programmers - SQL - SELECT 문제들 풀어보기 본문
프로그래머스에서 SQL문제들 중 SELECT 문제들을 풀어 보았습니다. 테이블 하나에서 단순 조회하는 정도라 난이도는 쉬운 편입니다.
직접 테스트해 보면서 작성하려면 테이블을 미리 만들어 두고 해 보면 좀 더 수월합니다.
CREATE TABLE IF NOT EXISTS `animal_ins` (
`animal_id` VARCHAR(50) NOT NULL COMMENT '아이디',
`animal_type` VARCHAR(30) NOT NULL COMMENT '생물 종',
`datetime` DATETIME NOT NULL COMMENT '보호 시작일',
`intake_condition` VARCHAR(30) NOT NULL COMMENT '보호 시작 시 상태',
`name` VARCHAR(30) COMMENT '이름',
`sex_upon_intake` VARCHAR(30) NOT NULL COMMENT '성별 및 중성화 여부',
primary key (`animal_id`)
);
-- delete from animal_ins where 1=1;
insert into animal_ins values
('A350276', 'Cat', '2017-08-13 13:50:00', 'Normal', 'Jewel', 'Spayed Female' ),
('A381217', 'Dog', '2017-07-08 09:41:00', 'Sick', 'Cherokee', 'Neutered Male' ),
('A352713', 'Cat', '2017-04-13 16:29:00', 'Normal', 'Gia', 'Spayed Female' ),
('A350375', 'Cat', '2017-03-06 15:01:00', 'Normal', 'Meo', 'Neutered Male' )
;
모든 레코드 조회하기
programmers.co.kr/learn/courses/30/lessons/59034
말 그대로 모든 레코드 조회하기입니다. ANIMAL_ID순으로 정렬합니다.
SELECT * FROM animal_ins
이렇게 해도 통과하긴 한데요. 문제에 ANIMAL_ID순으로 정렬하라고 했기 때문에 정렬을 넣겠습니다.
SELECT *
FROM animal_ins
order by animal_id
그리고 SELECT *을 사용했는데요. 결과와 칼럼이 표시되는 순서가 같아서 문제가 없지만 칼럼 순서를 맞춰야 된다면 칼럼을 하나하나 순서대로 적어주어야 할 수 있으니 결과가 틀리면 칼럼 순서가 맞는지도 확인해 봅니다.
역순 정렬하기
programmers.co.kr/learn/courses/30/lessons/59035
동물의 이름과 보호 시작일을 조회하는데 ANIMAL_ID 역순으로 정렬합니다.
SELECT name, datetime
FROM animal_ins
order by animal_id desc
이름과 보호 시작일은 각각 name, datetime입니다. order by animal_id로 정렬하고 desc를 붙여서 역순으로 정렬합니다.
아픈 동물 찾기
programmers.co.kr/learn/courses/30/lessons/59036
아픈 동물을 찾고 아이디와 이름을 조회합니다. 정렬은 아이디 순입니다.
SELECT animal_id, name
FROM ANIMAL_INS
WHERE intake_condition = 'Sick'
order by animal_id
intake_condition이 'Sick'인 것을 찾으면 됩니다.
어린 동물 찾기
programmers.co.kr/learn/courses/30/lessons/59037
어린 동물은 따로 구분은 없고 다만 Aged(나이 든) 동물이 있으니 나이 든 동물이 아닌 동물을 찾습니다. 아이디와 이름을 조회하고 아이디 순으로 정렬합니다.
SELECT animal_id, name
FROM ANIMAL_INS
WHERE intake_condition <> 'Aged'
order by animal_id
동물의 아이디와 이름
programmers.co.kr/learn/courses/30/lessons/59403
동물의 아이디와 이름을 ANIMAL_ID순으로 조회합니다.
SELECT animal_id, name
FROM animal_ins
order by animal_id
여러 기준으로 정렬하기
programmers.co.kr/learn/courses/30/lessons/59404
아이디와 이름, 보호 시작일을 이름순으로 조회합니다. 단 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줍니다.
SELECT animal_id, name, datetime
FROM animal_ins
order by name, datetime desc
order by 뒤에 정렬 기준 순서대로 적습니다. 이름순으로 먼저 정렬하고 datetime에는 desc를 넣어서 역순 정렬을 해서 보흐를 나중에 시작한 동물이 먼저 보이도록 합니다.
상위 n개 레코드
programmers.co.kr/learn/courses/30/lessons/59405
SELECT name
FROM animal_ins
order by datetime
limit 1
'개발이야기 > PS - Problem Solving, 알고리즘' 카테고리의 다른 글
Programmers - SQL - GROUP BY 문제들 풀어보기 (0) | 2021.03.25 |
---|---|
Programmers - SQL - SUM, MAX, MIN 문제들 풀어보기 (0) | 2021.03.24 |
Codility - Odd Occurrences In Array (0) | 2021.03.20 |
Codility - CyclicRotation (0) | 2021.03.19 |
Codility - BinaryGap - Python (0) | 2021.03.16 |