준호씨의 블로그

Programmers - SQL - SELECT 문제들 풀어보기 본문

개발이야기/PS - Problem Solving, 알고리즘

Programmers - SQL - SELECT 문제들 풀어보기

준호씨 2021. 3. 21. 16:11
반응형

프로그래머스에서 SQL문제들 중 SELECT 문제들을 풀어 보았습니다. 테이블 하나에서 단순 조회하는 정도라 난이도는 쉬운 편입니다.

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

직접 테스트해 보면서 작성하려면 테이블을 미리 만들어 두고 해 보면 좀 더 수월합니다.

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_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

말 그대로 모든 레코드 조회하기입니다. 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_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

동물의 이름과 보호 시작일을 조회하는데 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

 

코딩테스트 연습 - 아픈 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

아픈 동물을 찾고 아이디와 이름을 조회합니다. 정렬은 아이디 순입니다.

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

 

코딩테스트 연습 - 어린 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

어린 동물은 따로 구분은 없고 다만 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_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

동물의 아이디와 이름을 ANIMAL_ID순으로 조회합니다.

SELECT animal_id, name
FROM animal_ins
order by animal_id

 

여러 기준으로 정렬하기

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

아이디와 이름, 보호 시작일을 이름순으로 조회합니다. 단 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줍니다.

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

 

코딩테스트 연습 - 상위 n개 레코드

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

SELECT name
FROM animal_ins
order by datetime
limit 1

 

 

반응형
Comments