TIL / 프로그래머스 MySQL 문제풀기 (Level3)
Today
- MySQL 프로래머스 문제 풀기 (Level3)
SELECT 실행 순서
- | 작성순서 | 실행순서 | 실행해석 |
---|---|---|---|
1 | SELECT | FROM | 어느 테이블 대상으로 접근 할 것인가 |
2 | FROM | WHERE | 해당 테이블에서 조건에 만족하는 레코드(row) 조회 |
3 | WHERE | GROUP BY | 레코드(row)들을 기준으로 그룹화, 그룹은 하나의 row |
4 | GROUP BY | HAVING | 생성된 그룹 중 특정조건 필터 |
5 | HAVING | SELECT | 필터된 결과에 맞는 필드조회 |
6 | ORDER BY | ORDER BY | 필드를 기준으로 지정된 방식으로 정렬 |
7 | LIMIT | LIMIT | 입력된 개수 위에서부터 출력 |
1. 없어진 기록 찾기 (JOIN)
- 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.
SELECT A.animal_id, A.name
FROM ANIMAL_INS AS A
RIGHT JOIN ANIMAL_OUTS AS B
ON A.animal_id = B.animal_id
WHERE A.animal_id IS NULL
ORDER BY B.animal_id
2. 있었는데요 없었습니다
- 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.
SELECT A.animal_id, A.name
FROM ANIMAL_INS AS A LEFT JOIN ANIMAL_OUTS AS B
ON A.animal_id = B.animal_id
WHERE A.datetime > B.datetime
ORDER BY A.datetime
3. 헤비 유저가 소유한 장소
- 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
SELECT *
FROM PLACES
WHERE HOST_ID IN ( //WHERE문에서 이 목록에 대응하는 HOST_ID가 있는 행만 조회
SELECT HOST_ID //공간을 2개 이상 등록한 HOST_ID 목록을 서브 쿼리 테이블
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(ID) >= 2)
ORDER BY ID
4. 오랜 기간 보호한 동물(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.datetime IS NULL // 입양날짜가 비어 있는 조건
ORDER BY A.datetime
LIMIT 3
5. 오랜 기간 보호한 동물(2)
- 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다.
SELECT A.ANIMAL_ID, A.NAME
FROM ANIMAL_INS AS A, ANIMAL_OUTS AS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID // 아이디가 동일하게 겹치는 조건
ORDER BY B.DATETIME - A.DATETIME // 차이나는 기간으로 정렬
DESC LIMIT 2
마치며,
JOIN이 Mysql의 꽃(?)이라고 하던데 이전에 회사를 다니며 익혔던 엑셀문법과 많이 비슷해서 감을 잡는데 어렵지는 않았다.
서브쿼리문법은 사용하는 법을 몰라 검색해가며 풀이를 보면서 이해했다.
겹치는 부분에서 어떻게 조인할지 처음에 정하고 문제 푸는것이 중요 한 것 같다.
Author And Source
이 문제에 관하여(TIL / 프로그래머스 MySQL 문제풀기 (Level3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sssssssssy/TIL-프로그래머스-MySQL-문제풀기-Level3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)