[SQL] 프로그래머스 - JOIN

June·2021년 2월 24일
0

SQL

목록 보기
5/11

프로그래머스 - JOIN

없어진 기록 찾기

SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM ANIMAL_INS RIGHT JOIN ANIMAL_OUTS 
ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.ANIMAL_ID IS NULL

FROM A JOIN B ON A.x = B.x
구조 기억하자.

있었는데요 없었습니다

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

SELECT ANIMAL_INS.ANIMAL_ID, ANIMAL_INS.NAME
FROM ANIMAL_INS JOIN ANIMAL_OUTS ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.DATETIME > ANIMAL_OUTS.DATETIME
ORDER BY ANIMAL_INS.DATETIME

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

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

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
LIMIT 3

입양 들어온 동물과 입양 나간 동물의 집합이 있을때 A-B 중에서 제일 오래된 3마리를 고르면 된다. 따라서 입양 들어온 동물과 입양 간 동물을 left join하고 입양 간 동물이 NULL이도록하면 된다.

보호소에서 중성화한 동물

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

SELECT AO.ANIMAL_ID, AO.ANIMAL_TYPE, AO.NAME
FROM ANIMAL_INS AS AI JOIN ANIMAL_OUTS AS AO ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.SEX_UPON_INTAKE LIKE 'Intact%' and (AO.SEX_UPON_OUTCOME LIKE 'Spayed%' OR AO.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY AO.ANIMAL_ID

mysql like 문은 특정 문자가 포함되어 있는 데이터를 검색 할때 사용됩니다.

예를 들어 검색창에 mysql 이라고 검색하면

like를 사용하여 mysql_select, mysql_update 이런한 데이터를 확인 할수있지만 like를 사용하지 않으면 mysql 과 일치하는 데이터만 나오게 됩니다.

특정 문자로 시작하는 데이터 검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '특정 문자열%;

특정 문자로 끝나는 데이터 검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '% 특정 문자열;

특정 문자 포함 데이터 검색
SELECT [필드명] FROM [테이블명] WHERE [필드명] LIKE '% 특정 문자열%;

SELECT * FROM member WHERE name LIKE '홍%;
member 테이블에 name이 홍 씨를 모두 검색
(뒤에 자릿수는 상관 x, 홍 만 있어도 검색)

SELECT * FROM member WHERE name LIKE '% 길동;
member 테이블에 name이 이름이 x길동 인 사람을 검색
(앞에 자릿수는 상관 x, 길동 만 있어도 검색)

SELECT * FROM member WHERE name LIKE '% 길동%;
member 테이블에 name이 이름이 x길동x 인 사람을 검색
(앞, 뒤에 자릿수는 상관 x, 길동 만 있어도 검색)

https://m.blog.naver.com/PostView.nhn?blogId=hongsun1992&logNo=220680537524&proxyReferer=http:%2F%2F211.193.127.39%2F

0개의 댓글