본문 바로가기
매일매일 코딩연습!/프로그래머스

[코딩연습 9일차] 프로그래머스 : 모든 레코드 조회하기 / MySQL / Select연습

by k-bonnie 2021. 2. 6.
728x90

으아아아아아!!

아까의 코딩문제가 넘나 수학이었어서 빡쳐서 Lv.1으로 하나 더 푼다.

아무거나 들어왔더니 이번에는 sql문제이넹 그래도 난 sql 잘하니까 (❁´◡`❁) 크크 

설마 이것도 오래걸리는거 아니겠지.... (불안...) 

시작해볼가...


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 2018-01-22 14:32:00 Normal Sugar Neutered Male
A350276 Cat 2017-08-13 13:50:00 Normal Jewel Spayed Female
A350375 Cat 2017-03-06 15:01:00 Normal Meo Neutered Male
A352555 Dog 2014-08-08 04:20:00 Normal Harley Spayed Female

..이하 생략

 


내 답 >>

SELECT * from ANIMAL_INS order by ANIMAL_ID;

출력 예시를 보니 Column 순서대로 그냥 쭉 나왔길래 *로 모든 column을 불러주고 ID오름차순 정렬해줌.

앗, 근데 이거 문제가 연속으로 이어져있다...!


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

 

NAME DATETIME
Rocky 2016-06-07 09:17:00
Shelly 2015-01-29 15:01:00
Benji 2016-04-19 13:28:00
Jackie 2016-01-03 16:25:00
*Sam 2016-03-13 11:17:00

..이하 생략


내 답 >>

SELECT NAME, DATETIME from ANIMAL_INS order by ANIMAL_ID DESC

NAME, DATETIME 열 불러와주고, 정렬은 ID의 역순으로 ㅎ.ㅎ 아 신난당 다음문제~


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

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

ANIMAL_ID NAME
A367012 Miller
A381217 Cherokee

내 답 >>

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' order by ANIMAL_ID

아픈 동물만 불러와야 하므로 WHERE로 조건문 걸어주었다.

(슬슬 언제까지 푸는지 지겨워짐.......ㅋㅋㅋㅋ)


다음은 젊은 동물의 아이디/이름 조회하기

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION !='Aged' order by ANIMAL_ID

늙은 동물만 AGED로 표시되어 있었기 때문에 AGED가 아닌 애들(=젊은 애들) 불러오기


\다음문제,,

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

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID

동물 보호소에 들어온 모든 동물의 아이디와 이름, 보호 시작일을 이름 순으로 조회하는 SQL문을 작성해주세요. 단, 이름이 같은 동물 중에서는 보호를 나중에 시작한 동물을 먼저 보여줘야 합니다.

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

 

이름 오름차순으로 정렬하다가, 같은 이름일때는 일자가 늦은애부터 나와야하니까

1순위로 적용되는 NAME 오름차순 먼저 써주고

2순위로 적용되는 DATETIME 내림차순 써준다.


동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.

SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1

날짜순 오름차순으로 정렬해서 제일 오래된 애를 1개만 꺼내기!!

참고로 정렬의 기본값이 오름차순이기 때문에 오름차순이면 ASC 생략해도 됨.


가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

 

가장 늦게 들어온 동물은 Anna이고, Anna는 2013-11-18 17:03:00에 들어왔습니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

시간
2013-11-18 17:03:00

Column명을 시간으로 안해도 된다했지만 나는 했당.

SELECT DATETIME AS '시간' FROM ANIMAL_INS ORDER BY DATETIME DESC LIMIT 1

WOW,,, 드디어 끝남....

사실 문제가 끊임없이 나오지만

이 이후로는 SELECT문 문제가 아니라 SUM, MAX, MIN이기 때문에 자체적으로 여기서 종료하도록 한다.

 

ADIOS 💌