Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 신입 데이터분석가
- Retention
- Datarian
- 취준
- 독서
- 데이터리안
- 누적합
- leetcode
- rank
- SQL
- pandas
- funnel
- 리텐션
- dense_rank
- 퍼널분석
- 린분석
- row_number
- regexp
- 프로그래머스
- 윈도우 함수
- SolveSQL
- 윈도우함수
- 그로스해킹
- 서브쿼리
- 순위함수
- python
- 데이터분석
- MYSQL
- LEFTJOIN
- advent of sql
Archives
- Today
- Total
데이터 분석
보호소에서 중성화한 동물 | Lv.4 본문
문제
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.
참고 ) 중성화를 거치지 않은 동물은 성별 및 중성화 여부에 Intact, 중성화를 거친 동물은 Spayed 또는 Neutered라고 표시
| sex_upon_intake/sex_upon_outcome | |
| 중성화를 거치지 않은 경우 | Intact |
| 중성화 된 경우 | Spayed 또는 Neutered |
풀이
# (1)
SELECT animal_id
, animal_type
, name
FROM animal_outs
WHERE animal_id IN (
SELECT animal_id
FROM animal_ins
WHERE sex_upon_intake REGEXP 'Intact'
)
AND sex_upon_outcome REGEXP 'Spayed|Neutered'
ORDER BY animal_id
# (2)
SELECT o.animal_id
, o.animal_type
, o.name
FROM animal_outs o
JOIN animal_ins i ON o.animal_id = i.animal_id
AND i.sex_upon_intake REGEXP 'Intact'
AND o.sex_upon_outcome REGEXP 'Spayed|Neutered'
ORDER BY o.animal_id
✅ 1번 쿼리 : WHERE 절 다중행 서브쿼리
- animal_outs 테이블(보호소에서 입양 보낸 동물의 정보)에서 보호소에 들어올 당시 중성화 되지 않은 animal_id 에 해당하는 동물이 필터링될 수 있도록 서브쿼리 작성
- WHERE 절에 Spayed 또는 Neutered에 해당하는 조건을 정규 표현식 REGEXP 활용해 추가
✅ 2번 쿼리 : JOIN
- 두 테이블을 animal_id를 기준으로 조인함과 동시에 ON 절에 중성화 관련 조건을 추가하여, 조인 전에 먼저 필터링하여 불필요한 데이터를 줄인 것이 특징
'SQL > 프로그래머스' 카테고리의 다른 글
| 우유와 요거트가 담긴 장바구니 | Lv.4 | GROUP_CONCAT💡 (1) | 2025.04.22 |
|---|---|
| 자동차 대여 기록 별 대여 금액 구하기 | Lv.4 (1) | 2025.04.21 |
| 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 | Lv.4💡 (0) | 2025.04.14 |
| 오랜 기간 보호한 동물(2) | Lv.3 (0) | 2025.04.08 |
| 자동차 대여 기록에서 '대여중 / 대여 가능' 구분하기 | Lv.3💡 (0) | 2025.04.07 |