문제링크

 

코딩테스트 연습 - 여러 기준으로 정렬하기

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

programmers.co.kr

 

 

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

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 ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A349996 Cat 2018-01-22 14:32:00 Normal Sugar Neutered Male
A350276 Cat 2017-08-13 13:50:00 Normal Jewel Spayed Female
A396810 Dog 2016-08-22 16:13:00 Injured Raven Spayed Female
A410668 Cat 2015-11-19 13:41:00 Normal Raven Spayed Female

 

  1. 이름을 사전 순으로 정렬하면 다음과 같으며, 'Jewel', 'Raven', 'Sugar'
  2. 'Raven'이라는 이름을 가진 개와 고양이가 있으므로, 이 중에서는 보호를 나중에 시작한 개를 먼저 조회합니다.

 

따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_ID NAME DATETIME
A350276 Jewel 2017-08-13 13:50:00
A396810 Raven 2016-08-22 16:13:00
A410668 Raven 2015-11-19 13:41:00
A349996 Sugar 2018-01-22 14:32:00

 

 

 

정답

SELECT ANIMAL_ID,NAME,DATETIME 
from ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC;


-- ASC 오름차순 / DESC 내림차순

문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE 는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

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_ID순으로 조회하는 SQL문을 작성해주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.

ANIMAL_ID NAME
A349996 Sugar
A350276 Jewel
A350375 Meo
A352555 Harley
A352713 Gia
A352872 Peanutbutter
A353259 Bj

..이하 생략

 

정답

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

문제 링크

 

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

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

programmers.co.kr

 

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

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 ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A365172 Dog @Aug 26, 2014 12:53 PM Normal Diablo Neutered Male
A367012 Dog @Sep 16, 2015 9:06 AM Sick Miller Neutered Male
A365302 Dog @Jan 8, 2017 4:34 PM Aged Minnie Spayed Female
A381217 Dog @Jul 8, 2017 9:41 AM Sick Cherokee Neutered Male

이 중 젊은 동물은 Diablo, Miller, Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

title NAME
A365172 Diablo
A367012 Miller
A381217 Cherokee

 

정답

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != "Aged";

문제링크

 

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

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

programmers.co.kr

문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

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

동물 보호소에 들어온 동물 중 아픈 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

 

 

🐶 아픈 동물 - INTAKE_CONDITION Sick 인 경우를 말함

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A365172 Dog @Aug 26, 2014 12:53 PM Normal Diablo Neutered Male
A367012 Dog @Sep 16, 2015 9:06 AM Sick Miller Neutered Male
A365302 Dog @Jan 8, 2017 4:34 PM Aged Minnie Spayed Female
A381217 Dog @Jul 8, 2017 9:41 AM Sick Cherokee Neutered Male

 

 

이 중 아픈 동물은 Miller와 Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

ANIMAL_ID NAME
@Jan 21, 2021 12:48 AM Miller
@Jan 21, 2021 12:48 AM Cherokee

 

정답

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = "SICK";

문제링크

 

코딩테스트 연습 - 역순 정렬하기

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

programmers.co.kr

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE

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

동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요. SQL을 실행하면 다음과 같이 출력되어야 합니다.

NAMEDATETIME

Rocky @Jun 7, 2016 9:17 AM
Shelly @Jan 29, 2015 3:01 PM
Benji @Apr 19, 2016 1:28 PM
Jackie @Jan 3, 2016 4:25 PM
*Sam @Mar 13, 2016 11:17 AM

..이하 생략

 

정답

SELECT NAME< DATETIME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID DESC;

 

ORDER BY 방향 설정

주어진 문제는 다음과 같다.

🐶 🐱동물 보호소에 들어온 모든 동물의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 ANIMAL_ID 역순으로 보여주세요.

이름 역순으로 하려면 다음과 같이 해주면 된다.

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

이름 오름차순이라면 다음과 같이 해주면 된다.

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

문제링크

 

코딩테스트 연습 - 모든 레코드 조회하기

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

programmers.co.kr

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

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_ID순으로 조회하는 SQL문을 작성해주세요. SQL실행하면 다음과 같이

출력 되어야 한다.

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A349996 Cat @Jan 22, 2018 2:32 PM Normal Sugar Neutered Male
A350276 Cat @Aug 13, 2017 1:50 PM Normal Jewel Spayed Female
A350375 Cat @Mar 6, 2017 3:01 PM Normal Meo Neutered Male
A352555 Dog @Aug 8, 2014 4:20 AM Normal Harley Spayed Female

.. 이하 생략

 

정답

SELECT * FORM ANIMAL_INS ORDER BY ANIMAL_INS.ANIMAL_ID;

풀이

SELECT 구문

SELECT는 테이블 하나 이상의 컬럼을 가져오는 키워드입니다. **SELECT로 데이터를 가져오려면 , 최소한 두 가지 정보는 반드시 명시해야한다.** 무엇을 가져올지 그리고 어디에서 가져올지를 말이다.

 

ORDER BY 구문

ORDER BY 는 가져온 데이터를 정렬하는 키워드이다. 정렬 키워드를 입력하지 않는다고해서 쿼리 결과가 항상 무작위인 것은 아니다.

데이터를 정렬하지 않으면, 테이블에 있는 순서대로 출력되는데 이 순서는 처음에 데이터가 테이블에 삽입되는 순서인데,

데이터가 나중에 업데이트 되거나 삭제되면 , DBMS가 반환된 저장 공간을 재사용 하는지에 따라 순서가 바뀔 수 있다는것

결론적으로 정렬을 명시하지 않는다면, 정렬 순서를 예상할 수 없다. 관계형 데이터베이스 설계 이론에서는 정렬이 명시되지 않으면, 검색된 데이터의 순서를 가정해서는 안 된다고 명시되어 있다.

SELECT 로 조회한 데이터를 정렬하려면, 다음과 같이 ORDER BY 절을 사용한다. ORDER BY절 ㅇ=뒤에는 하나 이상의 컬럼 이름을 적는데, 이를 기준으로 정렬한다.

다음 구문은 결과를 prod_name 을 기준으로 정렬하라고 명시한 것이다.

SELECT prod_name
FROM product
ORDER BY prod_name;

위에 구문을 바탕으로 ANIMAL_ID를 기준으로 정렬한 ANIMAL_INS 테이블의 데이터 조회는 다음과 같이 하면 되겠다.

SELECT *
FROM ANIMAL_INS
ORDER BY ANIMAL_INS.ANIMAL_ID;

+ Recent posts