문제


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문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.


예시

예를 들어, 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


풀이


1
2
3
SELECT ANIMAL_ID, NAME, DATETIME
FROM ANIMAL_INS
ORDER BY NAME ASC, DATETIME DESC
cs

  • 이름 사전순 = 오름차순, 나중에 보호한 시간 = 내림차순
  • ORDER BY 는 여러개 사용이 가능하다. 단, 왼쪽부터 순차적으로 진행되어 정렬이 되기에 순서를 고려해야한다.
  • ORDER BY NAME ASC (=ORDER BY NAME), DATETIME DESC






출처 : https://programmers.co.kr/learn/courses/30/lessons/59404

'코딩테스트 연습 > SQL' 카테고리의 다른 글

[MAX, MIN, SUM] 최솟값 구하기  (0) 2020.03.21
[SELECT] 상위 n개 레코드  (0) 2020.03.21
[SELECT] 동물의 아이디와 이름  (0) 2020.03.21
[SELECT] 어린 동물 찾기  (0) 2020.03.21
[SELECT] 아픈 동물 찾기  (0) 2020.03.21

문제


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


풀이


1
2
3
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
cs

  • 모든 레코드 조회 시 ANIMAL_ID를 기준으로 정렬하기와 동일하지만 출력되는 컬럼명이 ANIMAL_ID와 NAME만 출력되어야 한다.
  • SELECT [원하는 컬럼명] FROM [테이블 명] ORDER BY [기준 컬럼]






출처 : https://programmers.co.kr/learn/courses/30/lessons/59403

'코딩테스트 연습 > SQL' 카테고리의 다른 글

[SELECT] 상위 n개 레코드  (0) 2020.03.21
[SELECT] 여러 기준으로 정렬하기  (0) 2020.03.21
[SELECT] 어린 동물 찾기  (0) 2020.03.21
[SELECT] 아픈 동물 찾기  (0) 2020.03.21
[SELECT] 역순 정렬하기  (0) 2020.03.21

문제


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


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


예시

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


ANIMAL_ID

ANIMAL_TYPE 

DATETIME

INTAKE_CONDITION 

NAME

SEX_UPON_INTAKE 

A365172

Dog

2014-08-26 12:53:00

Normal 

Diablo

Neutered Male

A350276

Dog

2015-09-16 09:06:00

Sick

Miller

Neutered Male

A365302

Dog

2017-01-08 16:34:00

Aged

Minnie

Spayed Female 

A381217

Dog

2017-07-08 09:41:00

Sick 

Cherokee

Neutered Male 


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


ANIMAL_ID

NAME

A365172

Diablo 

A367012

Miller

A381217

Cherokee 


풀이



1
2
3
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NOT INTAKE_CONDITION="Aged"
cs

  • 보호 시작 시 상태가 Aged 인 것은 젊은 상태가 아니였다는 것을 의미한다.
  • Aged 가 아닌 상태에 해당하는 것을 제외하고 출력한다.
  • WHERE NOT 칼럼명="조건"






출처 : https://programmers.co.kr/learn/courses/30/lessons/59037

문제


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


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


예시

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


ANIMAL_ID

ANIMAL_TYPE 

DATETIME

INTAKE_CONDITION 

NAME

SEX_UPON_INTAKE 

A365172

Dog

2014-08-26 12:53:00

Normal 

Diablo

Neutered Male

A350276

Dog

2015-09-16 09:06:00

Sick

Miller

Neutered Male

A365302

Dog

2017-01-08 16:34:00

Aged

Minnie

Spayed Female 

A381217

Dog

2017-07-08 09:41:00

Sick 

Cherokee

Neutered Male 


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


ANIMAL_ID

NAME

 A367012

Miller 

 A381217

Cherokee 


풀이


1
2
3
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION LIKE "Sick"
cs


  • SQL 패턴 매칭 LIKE 를 사용하여 해당하는 데이터가 있으면 출력한다.
  • WHERE [컬럼명] LIKE "문자열"
  • "_문자열" : _ 를 붙이면 임의의 문자 한 개를 의미한다.
  • "%문자열" : %를 붙이면 임의의 문자 또는 문자열을 의미한다.






출처 : https://programmers.co.kr/learn/courses/30/lessons/59036

+ Recent posts