STUDY 기록/코테기록
프로그래머스 SQL 고득점 Kit 과 코딩 문제 풀어보기 ~
TREEKIM
2022. 4. 26. 22:06
#[SELECT]
#모든 레코드 조회하기
SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID
#역순 정렬하기
SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC
#아픈 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ORDER BY ANIMAL_ID
#어린 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY ANIMAL_ID
#동물의 아이디와 이름
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID
#여러 기준으로 정렬하기
SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC
#상위 n개 레코드
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1
#[SUM, MAX, MIN]
#최댓값 구하기
SELECT MAX(DATETIME) FROM ANIMAL_INS
#최솟값 구하기
SELECT MIN(DATETIME) FROM ANIMAL_INS
#동물 수 구하기
SELECT COUNT(*) FROM ANIMAL_INS
#중복 제거하기
SELECT count(distinct NAME)FROM ANIMAL_INS #SELECT count(distinct NAME), count(NAME) FROM ANIMAL_INS
#[GROUP BY]
#고양이와 개는 몇 마리 있을까
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) as count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE order by ANIMAL_TYPE
#동명 동물 수 찾기
SELECT NAME, COUNT(NAME) as COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >=2 ORDER BY NAME
#입양 시각 구하기(1)
SELECT HOUR(DATETIME), COUNT(*) as COUNT FROM ANIMAL_OUTS WHERE HOUR(DATETIME) >8 and HOUR(DATETIME) <20 GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME)
#입양 시각 구하기(2) #LV4라 나중에 풀기 ㅎㅎ
#[IS NULL]
#이름이 없는 동물의 아이디
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL
#이름이 있는 동물의 아이디
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL
#NULL 처리하기(다른 방법들이 더 있을텐데 나중에 확인!)
SELECT ANIMAL_TYPE, IF(NAME IS NULL, "No name",NAME) as NAME, SEX_UPON_INTAKE FROM ANIMAL_INS
#[JOIN]
# 없어진 기록 찾기
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME FROM ANIMAL_OUTS LEFT JOIN ANIMAL_INS ON ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID WHERE ANIMAL_INS.ANIMAL_ID IS NULL;
#있었는데요 없었습니다
SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME FROM ANIMAL_INS INNER JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID WHERE ANIMAL_INS.DATETIME > ANIMAL_OUTS.DATETIME ORDER BY ANIMAL_INS.DATETIME ASC
#오랜 기간 보호한 동물(1)
SELECT ANIMAL_INS.NAME,ANIMAL_INS.DATETIME FROM ANIMAL_INS LEFT JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID WHERE ANIMAL_OUTS.ANIMAL_ID IS NULL ORDER BY ANIMAL_INS.DATETIME ASC LIMIT 3
#보호소에서 중성화한 동물 Level 4라 나중에!ㅎㅎㅎ
#[String, Date]
#루시와 엘라 찾기
SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ("Lucy", "Ella", "Pickle", "Rogan", "Sabrina", "Mitty") ORDER BY ANIMAL_ID
#이름에 el이 들어가는 동물 찾기
SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE "%el%" and ANIMAL_TYPE = "Dog" ORDER BY NAME
#중성화 여부 파악하기
SELECT ANIMAL_ID, NAME,IF((SEX_UPON_INTAKE LIKE "%Neutered%" or SEX_UPON_INTAKE LIKE "%Spayed%"), "O", "X") as 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID;
#오랜기간 보호한 동물(2)
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME FROM ANIMAL_OUTS INNER JOIN ANIMAL_INS ON ANIMAL_OUTS.ANIMAL_ID = ANIMAL_INS.ANIMAL_ID ORDER BY (ANIMAL_OUTS.DATETIME-ANIMAL_INS.DATETIME) DESC LIMIT 2
#DATETIME에서 DATE로 형 변환
SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, "%Y-%m-%d") FROM ANIMAL_INS ORDER BY ANIMAL_ID
[헤비 유저가 소유한 장소]
SELECT ID, NAME, HOST_ID FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) >1) ORDER BY ID
나중에 LV4도 다 풀자구~~~