문제


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 

A399552

Dog

2013-10-14 15:38:00

Normal

Jack

Neutered Male

A379998

Dog

2013-10-23 11:42:00

Normal

Disciple

Intact Male

A370852

Dog

2013-11-03 15:04:00

Normal

Katie

Spayed Female

A403564

Dog

2013-11-18 17:03:00

Normal

Anna

Spayed Female


동물 보호소에 들어온 동물은 4마리입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


count

4


※ 컬럼 이름(위 예제에서는 count)은 일치하지 않아도 됩니다.


풀이


1
2
SELECT COUNT(ANIMAL_ID)
FROM ANIMAL_INS
cs

  • COUNT 는 SQL 문의 집계함수이다.
  • COUNT(컬럼명 or *) : 해당 ROW 개수를 계산해서 출력한다. 





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

문제


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 

A399552

Dog

2013-10-14 15:38:00

Normal

Jack

Neutered Male

A379998

Dog

2013-10-23 11:42:00

Normal

Disciple

Intact Male

A370852

Dog

2013-11-03 15:04:00

Normal

Katie

Spayed Female

A403564

Dog

2013-11-18 17:03:00

Normal

Anna

Spayed Female


가장 먼저 들어온 동물은 Jack이고, Jack은 2013-10-14 15:38:00에 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


DATETIME

2013-10-14 15:38:00


풀이


1
2
3
SELECT DATETIME
FROM ANIMAL_INS
WHERE DATETIME=(SELECT MIN(DATETIMEFROM ANIMAL_INS)
cs

  • DATETIME 이 나중일 수록 INT 값이 작아지는 것과 동일하게 WHERE 조건에 다시 SELECT MIN(DATETIME)을 하여 작은 값을 가져온다.
  • WHERE [컬럼명]=(SELECT MIN(컬럼명) FROM 테이블명)





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

문제


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 

A399552

Dog

2013-10-14 15:38:00

Normal

Jack

Neutered Male

A379998

Dog

2013-10-23 11:42:00

Normal

Disciple

Intact Male

A370852

Dog

2013-11-03 15:04:00

Normal

Katie

Spayed Female

A403564

Dog

2013-11-18 17:03:00

Normal

Anna

Spayed Female


이 중 가장 보호소에 먼저 들어온 동물은 Jack입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


NAME 

Jack


※ 보호소에 가장 먼저 들어온 동물은 한 마리인 경우만 테스트 케이스로 주어집니다.


풀이



1
2
3
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME LIMIT 1
cs

  • 시간 순으로 정렬 후 상위 한 개의 값을 가져와야 한다.
  • LIMIT [숫자] : 상위에서부터 [숫자]만큼의 자료를 보여준다.





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

문제


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

+ Recent posts