JOIN
- level 3 없어진 기록 찾기
- level 3 있었는데요 없었습니다.
- level 3 오랜기간 보호한 동물 (1)
- level 4 보호소에서 중성화한 동물
▷없어진 기록 찾기
programmers.co.kr/learn/courses/30/lessons/59042
코딩테스트 연습 - 없어진 기록 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT O.ANIMAL_ID, O.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE O.ANIMAL_ID = I.ANIMAL_ID(+) AND I.ANIMAL_ID IS NULL
ORDER BY O.ANIMAL_ID ASC
▷있었는데요 없었습니다.
programmers.co.kr/learn/courses/30/lessons/59043
코딩테스트 연습 - 있었는데요 없었습니다
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT I.ANIMAL_ID, I.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID AND I.DATETIME > O.DATETIME
ORDER BY I.DATETIME ASC
▷오랜기간 보호한 동물 (1)
programmers.co.kr/learn/courses/30/lessons/59044
코딩테스트 연습 - 오랜 기간 보호한 동물(1)
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT NAME, DATETIME
FROM (
SELECT I.NAME, I.DATETIME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID(+) AND O.ANIMAL_ID IS NULL
ORDER BY I.DATETIME ASC
)
WHERE ROWNUM <=3
▷보호소에서 중성화한 동물
programmers.co.kr/learn/courses/30/lessons/59045
코딩테스트 연습 - 보호소에서 중성화한 동물
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID AND I.SEX_UPON_INTAKE LIKE 'Intact%' AND (O.SEX_UPON_OUTCOME LIKE 'Spayed%' OR O.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY I.ANIMAL_ID ASC
사실 어제도 SELECT kit과 GROUP BY kit을 풀었지만,, 귀찮아서 글은 안올렸다.
오늘은 JOIN Kit을 했는데 레벨이 3인것 치고는 쉬웠지만 코드가 마음에 드는것은 아니다.
특히 마지막 문제의 경우 WHERE문이 너무 길어져서 보기 좋지 않다.
그래서 찾아보았더니
[Oracle] 오라클 다중 LIKE 문 (REGEXP_LIKE)
LIKE 문을 다중으로 사용하고싶은경우 ( 마치 IN절안에 LIKE문을 여러개 쓰는거처럼) WHERE 조건에 LIKE 를 OR로 걸어도 되지만 REGEXP_LIKE 을 사용 하면 된다. 일반적으로 COUNTRIES 테이블안에 아래와 같은
dpdpwl.tistory.com
위의 블로그를 보면 내가 별로라고 생각했던 것에 대해서 나와있었다.
REGEXP_LIKE(컬럼명, 정규식)
처음보는 쿼리문으로 정규식 자리에 |(파이프)를 이용하여 단어를 구분해준다. 일반적으로 단어를 나열하면 '%단어%'의 기능을 하기때문에 정규식을 써주어야한다고 나와있다.
SELECT I.ANIMAL_ID, I.ANIMAL_TYPE, I.NAME
FROM ANIMAL_INS I, ANIMAL_OUTS O
WHERE I.ANIMAL_ID = O.ANIMAL_ID
AND REGEXP_LIKE(I.SEX_UPON_INTAKE, 'Intact')
AND REGEXP_LIKE(O.SEX_UPON_OUTCOME, 'Spayed|Neutered')
ORDER BY I.ANIMAL_ID ASC
나같은 경우 다른 정규식을 써줄 필요는 없었지만, 공부는 해둬야지..
참고로 파이프 사이에 뛰어쓰기가 있으면 그것까지 하나로 치는것 같다..
오늘의 코딩테스트는 여기서 마치도록 하겠담.
'today's alogrithm' 카테고리의 다른 글
[BOJ] 정렬 단계2 - JAVA (0) | 2021.02.02 |
---|---|
[BOJ] 정렬 단계 - JAVA (0) | 2021.01.31 |
[BOJ] 재귀 단계 - JAVA (0) | 2021.01.24 |
[Programmers] SQL kit - Oracle (0) | 2021.01.23 |
[BOJ] 기본수학 2 - JAVA (0) | 2021.01.21 |