[프로그래머스 SQL] 보호소에서 중성화한 동물
프로그래머스 SQL 문제 해설2022. 2. 21. 18:23[프로그래머스 SQL] 보호소에서 중성화한 동물

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59045 들어올 때에는 비중성화, 나갈 때에는 중성화인 경우만 필터링 해서 보여줍니다. SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE INS.SEX_UPON_INTAKE LIKE 'Intact%' and (OUTS.SEX_UPON_OUTCOME LIKE 'Spayed%' or OUTS.SEX_UPON_OUTCOME LIKE 'Neutered%') ORDER BY INS.ANIMAL_ID LEFT JOIN으로 I..

[프로그래머스 SQL] 오랜 기간 보호한 동물(1)
프로그래머스 SQL 문제 해설2022. 2. 21. 18:01[프로그래머스 SQL] 오랜 기간 보호한 동물(1)

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59044 입양을 가지 못한 동물(JOIN 병합 후, OUTS의 값이 NULL인 경우) 중 DATETIME 순으로 정렬 후 LIMIT 3를 사용했다. SELECT INS.NAME, INS.DATETIME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_ID WHERE OUTS.ANIMAL_ID IS NULL ORDER BY INS.DATETIME LIMIT 3 결과

[프로그래머스 SQL] 있었는데요 없었습니다
프로그래머스 SQL 문제 해설2022. 2. 21. 17:41[프로그래머스 SQL] 있었는데요 없었습니다

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59043 이전문제와 로직이 동일합니다. SELECT INS.ANIMAL_ID, INS.NAME FROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID=OUTS.ANIMAL_ID WHERE INS.DATETIME > OUTS.DATETIME ORDER BY INS.DATETIME INS에서 ANIMAL_ID, NAME을 가져옵니다. A,B 각 두 테이블을 ID 기준으로 집합합니다. WHERE문으로 DATETIME이 들어온 시간보다 나간 시간이 더 빠를 때를 가져옵니다. 정렬은 INS의 DATETIME 기준으로 정렬합니다. 위와 같이 들어온 날짜가..

[프로그래머스 SQL] 없어진 기록 찾기
프로그래머스 SQL 문제 해설2022. 2. 21. 17:00[프로그래머스 SQL] 없어진 기록 찾기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59042 JOIN문제입니다. ANIMAL_INS의 테이블이 유실되어서, ANIMAL_OUTS에는 있지만 ANIMAL_INS에는 없는 동물의 ID와 이름을 ID순으로 조회하세요. SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS OUTS LEFT JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL ORDER BY OUTS.ANIMAL_ID 문제 해설: 먼저, LEFT JOIN으로 테이블OUTS에서 ID, NAME열의 값을 가져오고, INS에서는 OUTS와 일치하는 모든 A..

SQL | JOIN에 대하여
프로그래머스 SQL 문제 해설2022. 2. 21. 16:50SQL | JOIN에 대하여

소개할 JOIN문의 종류는 다음과 같습니다. INNER JOIN LEFT JOIN RIGHT JOIN OUTER JOIN [중괄호 안에 있는 부분은 생략해도 무관하다는 뜻입니다.] INNER JOIN 교집합입니다. 오른쪽 테이블 B에 일치하는 왼쪽 테이블 A의 모든 행을 반환합니다. SQL 예제 SELECT FROM Table_A A INNER JOIN Table_B B ON A.Key = B.Key LEFT [OUTER] JOIN 왼쪽 집합입니다. 오른쪽 테이블 B과 일치 여부는 관계없이, 테이블 A의 모든 행을 반환합니다. 그리고 오른쪽 테이블에서 일치하는 모든 행을 반환합니다. SQL예제 SELECT FROM Table_A A LEFT JOIN Table_B B ON A.Key = B.Key 문제 ..

[프로그래머스 SQL] NULL 처리하기
프로그래머스 SQL 문제 해설2022. 2. 21. 13:26[프로그래머스 SQL] NULL 처리하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59410 IFNULL으로 처리할 수 있습니다. IFNULL은 열 안의 행이 NULL일 때 변경해서 반환하는 역할을 합니다. SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC 결과 위에는 No name이 안보여서 내렸습니다.

[프로그래머스 SQL] 이름이 있는 동물의 아이디
프로그래머스 SQL 문제 해설2022. 2. 21. 13:13[프로그래머스 SQL] 이름이 있는 동물의 아이디

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59407 이름이 있는 경우, NULL이 아닐 때를 가져옵니다. IS NULL을 IS NOT NULL로 변경하였습니다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC 결과

[프로그래머스 SQL] 이름이 없는 동물의 아이디
프로그래머스 SQL 문제 해설2022. 2. 21. 13:12[프로그래머스 SQL] 이름이 없는 동물의 아이디

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59039 WHERE으로 이름이 NULL인 경우의 ANIMAL_ID를 보여줍니다. SELECT ANIMAL_ID from ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID 결과

[프로그래머스 SQL] 입양 시각 구하기(2)
프로그래머스 SQL 문제 해설2022. 2. 20. 13:38[프로그래머스 SQL] 입양 시각 구하기(2)

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59413 해당 문제만 난이도 급상승이네요. 고득점 킷 중 최고 난이도 입양시각이 0 ~ 23인 시간대의 수를 전부 가져옵니다. SET @hour := -1; # 변수 선언문 SELECT (@hour := @hour + 1) as HOUR, (SELECT COUNT(DATETIME) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT FROM ANIMAL_OUTS WHERE @hour < 23 @hour이라는 변수에 -1을 대입합니다. (:= 대입연산자, = 비교연산자) SELECT 문에서 적어주는 열을 2가지입니다. 1. HOUR : 0 ~ 23까지 +1..

[프로그래머스 SQL] 입양 시각 구하기(1)
프로그래머스 SQL 문제 해설2022. 2. 20. 13:24[프로그래머스 SQL] 입양 시각 구하기(1)

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59412 HOUR 함수를 사용해봅시다. WHERE으로 입양 시각이 9 ~ 19 시간 내인 경우만 가져오고, GROUP BY로 묶은 후, ORDER BY로 정렬합니다. SELECT HOUR(DATETIME) AS 'HOUR', COUNT(HOUR(DATETIME)) AS 'COUNT' FROM ANIMAL_OUTS WHERE HOUR(DATETIME) >= 9 and HOUR(DATETIME)

[프로그래머스 SQL] 동명 동물 수 찾기
프로그래머스 SQL 문제 해설2022. 2. 20. 13:20[프로그래머스 SQL] 동명 동물 수 찾기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59041 이 문제는 WHERE 조건문과, HAVING 조건문의 차이를 알고 있어야만 풀 수 있는 문제입니다. 모든 동물의 명을 세는데, NULL인 경우는 제외하고 중복되지 않는 경우도 제외합니다. 그 후에는 이름 순으로 정렬합니다. SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME ASC 문제 해설 WHERE으로 NULL인것을 거르고, GROUP BY로 묶고, HAVING 조건으로 COUNT 수가 2 이상인 것만 가져옵니다. ORD..

[프로그래머스 SQL] 고양이와 개는 몇 마리 있을까
프로그래머스 SQL 문제 해설2022. 2. 20. 12:57[프로그래머스 SQL] 고양이와 개는 몇 마리 있을까

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59040 GROUP BY 그루핑하고, COUNT로 각 ANIMAL_TYPE을 세어준 후 정렬합니다. SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC 결과

[프로그래머스 SQL] 중복 제거하기
프로그래머스 SQL 문제 해설2022. 2. 20. 12:52[프로그래머스 SQL] 중복 제거하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59408 동물의 이름의 종류의 수를 구하는 문제입니다. 동물의 이름이 NULL인 경우에는 수를 세지 않습니다. SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS WHERE NAME IS NOT NULL DISTINCT(중복 제거), WHERE IS NOT NULL문 사용합니다. 1. WHERE 조건문으로 NULL이 아닌 경우에는 갯수 셉니다. 2. COUNT(DISTINCT NAME)으로 NAME열에 중복이 되지 않는 경우에 갯수를 셉니다. 결과

[프로그래머스 SQL] 동물 수 구하기
프로그래머스 SQL 문제 해설2022. 2. 20. 12:45[프로그래머스 SQL] 동물 수 구하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59406 COUNT(세고 싶은 열)으로 동물 수(열 안의 행의 수)를 셀 수 있습니다. COUNT(*)말고 다른 열을 적어도 결과는 같습니다. SELECT COUNT(*) AS 'count' FROM ANIMAL_INS 결과

[프로그래머스 SQL] 최솟값 구하기
프로그래머스 SQL 문제 해설2022. 2. 20. 12:43[프로그래머스 SQL] 최솟값 구하기

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/59038 이전 문제와 동일한 로직입니다. MIN으로 가장 작은 값을 가져오면 됩니다. SELECT MIN(DATETIME) AS '시간' FROM ANIMAL_INS 결과

[프로그래머스 SQL] 최댓값 구하기
프로그래머스 SQL 문제 해설2022. 2. 20. 12:41[프로그래머스 SQL] 최댓값 구하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59415 가장 최근에 들어온 동물, DATETIME이 가장 최근인 동물을 가져옵니다. 이전 문제와 같은 로직이지만 이번에는 MAX함수를 사용하겠습니다. SELECT MAX(DATETIME) AS '시간' FROM ANIMAL_INS 열의 이름을 변경하는 방법은 열 옆에 AS '변경명'을 작성하여 변경할 수 있습니다. 결과 결과 2 (AS로 이름을 변경하지 사용하지 않았을 때)

[프로그래머스 SQL] 상위 n개 레코드
프로그래머스 SQL 문제 해설2022. 2. 20. 00:56[프로그래머스 SQL] 상위 n개 레코드

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59405 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회합니다. 오름차순 정렬 후, LIMIT로 위에서 1번째까지만 출력했습니다. SQL에서의 인덱스는 0부터 시작하지 않고, 1부터 시작합니다. 곧 배울 MAX함수로도 구현할 수 있지만, SELECT문제니 LIMIT를 사용하였습니다. SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1 결과

[프로그래머스 SQL] 여러 기준으로 정렬하기
프로그래머스 SQL 문제 해설2022. 2. 20. 00:37[프로그래머스 SQL] 여러 기준으로 정렬하기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59404 ANIMAL_ID, NAME, DATETIME를 출력합니다. 이름 순으로 오름차순 정렬하고, 이름이 같은 경우에는 내림차순으로 정렬한다. 정렬 기준은 먼저 적은 순서로 적용됩니다. SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC 결과

[프로그래머스 SQL] 동물의 아이디와 이름
프로그래머스 SQL 문제 해설2022. 2. 20. 00:32[프로그래머스 SQL] 동물의 아이디와 이름

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59403 ANIMAL_ID와 NAME 열을 출력합니다. SELECT ANIMAL_ID, NAME FROM ANIMAL_INS 결과

[프로그래머스 SQL] 어린 동물 찾기
프로그래머스 SQL 문제 해설2022. 2. 20. 00:29[프로그래머스 SQL] 어린 동물 찾기

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/59037 INTAKE_CONDITION가 'Aged' 아닌 것들 중에서 ANIMAL_ID, NAME 열들을 출력합니다. SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged'; 결과

image