[프로그래머스] SQL 고득점 Kit : SELECT
※ 모든 코드는 Oracle을 기준으로 작성되었습니다.
1. 모든 레코드 조회하기
문제 설명
Solution
1
2
3
|
SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
|
코드해석
동물의 정보를 담은 테이블의 모든 레코드를 ANIMAL_ID순으로 조회하는 SQL문입니다. SELECT * 으로 모든 칼럼을 선택하며, ORDER BY ANIMAL_ID로 레코드를 ANIMAL_ID순으로 정렬합니다.
2. 역순 정렬하기
문제 설명
Solutioin
1
2
3
|
SELECT NAME, DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;
|
코드해석
동물의 정보를 담은 테이블에서 모든 동물의 이름과 보호 시작일을 조회하되, ANIMAL_ID의 역순으로 출력합니다. SELECT로 이름, 보호 시작일을 선택하고 ORDER BY를 사용하여 정렬하되, DESC(Descending, 내림차순을 의미)으로 내림차순 정렬합니다.
3. 아픈 동물 찾기
문제 설명
Solutioin
1
2
3
4
|
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick'
ORDER BY ANIMAL_ID;
|
코드해석
아픈 동물은 INTAKE_CONDITION이 Sick인 경우를 의미합니다. SELECT로 동물의 아이디와 이름을 선택하고, WHERE절로 아픈 동물만 추출하여 출력되는 행을 제한합니다. 오라클에서 동일한 값을 찾는 비교연산자는 =입니다.
4. 어린 동물 찾기
문제 설명
Solutioin
1
2
3
4
|
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID;
|
코드해석
ANIMAL_INS 테이블에서 젊은 동물이란 INTAKE_CONDITON이 Aged가 아닌 경우를 뜻합니다. WHERE절에서 '같지 않음'을 의미하는 비교연산자 !=을 사용하여 Aged가 아닌 행을 추출합니다.
5. 동물의 아이디와 이름
문제 설명
Solutioin
1
2
3
|
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
|
코드해석
너무 쉬워서 생략하겠습니다..하하
6. 여러 기준으로 정렬하기
문제 설명
Solutioin
1
2
3
|
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME, DATETIME DESC;
|
코드해석
SELECT로 출력할 칼럼인 아이디, 이름, 보호 시작일을 선택합니다. ORDER BY를 사용하여 이름 순으로 정렬하되 이름이 같다면 보호를 나중에 시작한 동물을 먼저, 즉 내림차순 정렬해야 합니다. 이름은 디폴트 설정값인 오름차순으로 정렬할 것이므로 NAME만 써주고, 보호 시작일은 뒤에 DESC를 써서 내림차순 정렬임을 명시해줍니다. DESC는 바로 앞 칼럼인 보호 시작일에만 적용됩니다.
7. 상위 n개 레코드
문제 설명
Solutioin
1
2
3
4
5
|
SELECT NAME
FROM (SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME)
WHERE ROWNUM = 1;
|
코드해석
우선 서브 쿼리를 사용하여 보호 시작일로 오름차순 정렬합니다. 보호 시작일로 정렬된 이름 칼럼이 저장된 서브 쿼리로부터 WHERE ROWNUM = 1을 통해 가장 먼저 들어온 동물의 이름이 있는 첫번째 행만 출력하게 됩니다.