[SQL] 프로그래머스 SQL 고득점 Kit - SELECT

승민·2021년 12월 28일
0

Sql

목록 보기
1/5

💡 모든 레코드 조회하기

*을 이용하면 테이블의 모든 레코드를 조회할 수 있다. 이 문제에서는 ANIMAL_INS 테이블의 모든 레코드를 조회해야 하므로 다음과 같이 표현 가능하다.

SELECT * FROM ANIMAL_INS

다만, ANIMAL_ID 기준으로 오름차순으로 정렬해야 하므로 다음과 같이 ORDER BY를 쓴다. 만약 내림차순으로 정렬해야 한다면 ASC 대신에 DESC를 쓰면 된다.

SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC

💡 역순 정렬하기

동물의 이름과 보호 시작일만 나타나야 하고 정렬 기준이 ANIMAL_ID 내림차순이므로 다음과 같이 나타내면 된다.

SELECT NAME, DATETIME FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC

💡 아픈 동물 찾기

ANIMAL_INS 테이블에서 ANIMAL_ID와 NAME을 추출해야하고 'Sick' 상태인 동물들을 찾고 ANIMAL_ID 기준 오름차순으로 정렬해야 하므로 다음과 같이 나타낸다.

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID ASC

특정 조건을 만족하는 항목들을 추출하고 싶을 때에는 WHERE 문을 이용하면 된다. 이 때 다른 언어들에서 일치한다는 표현인 ==과 달리 =를 사용함에 주의해야 한다.

💡 어린 동물 찾기

아픈 동물 찾기 문제와 동일하게 WHERE문을 사용하면 된다. 단, Aged가 아닌 모든 동물을 찾아야 하므로 WHERE INTAKE_CONDITION != 'Aged'와 같이 !=를 사용한다.

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
WHERE INTAKE_CONDITION!='Aged'
ORDER BY ANIMAL_ID ASC

💡 동물의 아이디와 이름

위의 문제들과 유사하게 ORDER BY만으로 간단하게 해결 가능한 문제이다.

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC

💡 여러 기준으로 정렬하기

정렬 기준이 여러 개 일때는 ORDER BY 뒤에 정렬 기준들을 나열하면 된다. 이 때, 왼쪽에 있는 정렬 기준부터 적용이 됨에 유의한다.

SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC

위와 같이 쓰면 이름 기준 오름차순으로 먼저 정렬 후, 이름이 같은 경우에는 DATETIME 기준 내림차순으로 정렬할 수 있다.

💡 상위 N개 레코드

sql에서 상위 N개의 레코드를 추출하기 위해서는 LIMIT 구문을 사용하면 된다. 예를 들어 LIMIT 3과 같이 사용하면 맨 위에서부터 3개의 레코드를 추출하겠다는 뜻이고, LIMIT 3,7과 같이 쓰면 위에서부터 3번째 레코드부터 7번째 레코드까지 추출하겠다는 뜻이다. 따라서 이 문제는 DATETIME기준으로 오름차순으로 정렬 후 LIMIT 1을 해주면 된다.

SELECT NAME FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1
profile
안녕하세요 승민입니다

0개의 댓글