관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[SQL] 프로그래머스 7daySQL 챌린지 본문

SQL/SQL 문제풀이(프로그래머스)

[SQL] 프로그래머스 7daySQL 챌린지

막무가내막내 2019. 9. 7. 16:01
728x90

sql문을 연습할겸 풀어봤습니다. 

문제는 여기서 풀 수 있습니다. 

https://programmers.co.kr/events/7day-sql?utm_source=programmers&utm_medium=learn_7daySQL&utm_campaign=7daySQL

 

7daySQL 챌린지 | 프로그래머스

코딩테스트에 SQL문제 비중이 해마다 증가하는데, 어떻게 준비하면 좋을까요? 이제 프로그래머스에서 SQL 쿼리도 연습하세요!

programmers.co.kr

 

정답 

 

DAY1 SELECT 

  • 모든 레코드 조회하기

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

SELECT * from ANIMAL_INS order by ANIMAL_ID

 

  • 역순 정렬하기

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

SELECT NAME, DATETIME from ANIMAL_INS order by ANIMAL_ID desc

 

 


 

 

DAY2

  • 아픈 동물 찾기

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

SELECT ANIMAL_ID, NAME from ANIMAL_INS WHERE INTAKE_CONDITION = 'SICK'

 

  • 어린 동물 찾기

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

SELECT ANIMAL_ID, NAME from ANIMAL_INS where INTAKE_CONDITION <> 'Aged'

 


DAY3

  • 최솟값 구하기

동물 보호소에 가장 먼저 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요.

SELECT DATETIME AS 시간 FROM ANIMAL_INS order by DATETIME  limit 1

 

  • 이름이 없는 동물의 아이디

동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID from ANIMAL_INS where NAME is NULL order by ANIMAL_ID asc

 

DAY4

  • 고양이와 개는 몇 마리 있을까

동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이가 개보다 먼저 조회해주세요

SELECT ANIMAL_TYPE, count(*) As count from ANIMAL_INS group by  ANIMAL_TYPE

 

  • 동명 동물 수 찾기

동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요.

SELECT NAME, count(*) as COUNT from ANIMAL_INS group by NAME having count(NAME) >= 2

 

DAY5

  • 없어진 기록 찾기

천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

SELECT A.ANIMAL_ID, A.NAME from ANIMAL_OUTS as A left outer join ANIMAL_INS as B  on A.ANIMAL_ID =  B.ANIMAL_ID where B.ANIMAL_ID is null

 

  • 있었는데요 없었습니다

관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다

SELECT A.ANIMAL_ID, A.NAME from ANIMAL_OUTS as B left outer join ANIMAL_INS as A  on A.ANIMAL_ID =  B.ANIMAL_ID where A.DATETIME > B.DATETIME order by A.DATETIME

 

DAY6

  • 오랜 기간 보호한 동물(1)

아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다.

SELECT A.NAME, A.DATETIME from  ANIMAL_INS as A left join ANIMAL_OUTS  as B on A.ANIMAL_ID = B.ANIMAL_ID where B.ANIMAL_ID is Null order by A.DATETIME  limit 3

 

  • 보호소에서 중성화한 동물

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요

SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME from ANIMAL_OUTS  AS A  inner join ANIMAL_INS AS B on A.ANIMAL_ID = B.ANIMAL_ID where ((A.SEX_UPON_OUTCOME like 'Spayed%' or A.SEX_UPON_OUTCOME like 'Neutered%') AND (B.SEX_UPON_INTAKE
 like 'Intact%'))

 

DAY7

  • 루시와 앨라 찾기

 

동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별을 조회하는 SQL 문을 작성해주세요.

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE from ANIMAL_INS where NAME IN ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty") ORDER BY ANIMAL_ID

 

 

 

 

  • 름에 el이 들어가는 동물 찾기

보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 EL이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.

SELECT ANIMAL_ID, NAME from ANIMAL_INS where upper(NAME) LIKE "%EL%" AND ANIMAL_TYPE LIKE "Dog" ORDER BY NAME

 

 

 

 


챌린지를 모두 완수해서 뿌듯했다. sql문 더 열심히 공부해야겠다..

728x90
Comments