- 사이트명 : 프로그래머스(Programmers)
- SQL : Oracle
- 난이도 : 하
| NAME | TYPE | NULLABLE |
|---|---|---|
| ANIMAL_ID | VARCHAR(N) | FALSE |
| ANIMAL_TYPE | VARCHAR(N) | FALSE |
| DATETIME | DATETIME | FALSE |
| INTAKE_CONDITION | VARCHAR(N) | FALSE |
| NAME | VARCHAR(N) | TRUE |
| SEX_UPON_INTAKE | VARCHAR(N) | FALSE |
ANIMAL_INS 테이블에서 모든 컬럼을 가져오고 ANIMAL_ID를 정렬해서 가져오는 문제이다. 방법은 Select *를 통해 모든 칼럼을 가져오고 Order By ANIMAL_ID를 넣어 ANIMAL_ID를 정렬하여 조회하면 된다.
Select * From ANIMAL_INS Order By ANIMAL_ID ASC;
ORDER BY DESC역순정렬(내림차순)<->ORDER BY ASC(오름차순) 위, 문제와 비슷하며 위에는 오름차순 이 문제는 역순으로 내림차순(DESC)를 사용한다.
SELECT NAME,DATETIME from ANIMAL_INS order by ANIMAL_ID DESC;
Where를 써서 테이블을 조회하는 방법인데 ANIMAL_INS테이블에서 ANIMAL_ID , NAME 컬럼을 조회하면서 INTAKE_CONDITION이 Sick인 경우에만 조회한다. ANIMAL_ID가
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' order by ANIMAL_ID;
ANIMAL_INS테이블에서 ANIMAL_ID, NAME컴럼을 조회하지만 INTAKE_CONDITION컴럼이 AGED가 아닌 것을 조건으로 두기 때문에 <>을 써서 Where절을 완성하고 마지막으로 ANIMAL_ID를 오름차순(ASC)로 계산한다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION <> 'Aged' order by ANIMAL_ID ASC;
ANIMAL_INS테이블에서 ANIMAL_ID, NAME컬럼을 가져오고 ANIMAL_ID를 오름차순(ASC)로 정렬한다.
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS order by ANIMAL_ID ASC;
ANIMAL_INS테이블에서 ANIMAL_ID,NAME,DATETIME을 가져오는데 NAME을 먼저 오름차순(ASC)으로 정렬을 하고 바로 DATETIME을 내림차순(DESC)을 해 가져오는 것이다.
SELECT ANIMAL_ID, NAME,DATETIME FROM ANIMAL_INS order by NAME ASC,DATETIME DESC
테이블을 조회할 때 SELECT * FROM ANIMAL_INS ORDER BY DATETIME으로 DATETIME을 오름차순으로 정렬하여 DATETIME이 가장 빠른 시간으로 정렬하고, Where절에서 ROWNUM < 2를 써 상위 1개 값 NAME 컬럼만 조회한다.
SELECT NAME FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME) WHERE ROWNUM < 2;










