본문 바로가기
반응형

SQL/문제풀이29

프로그래머스 오랜 기간 보호한 동물(1) 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 오랜 기간 보호한 동물(1) SQL : MySQL ANIMAL_INS는 아직 보호소에 있는 동물 테이블이고 ANIMAL_OUTS는 입양나간 동물들 테이블인데 입양나가지 않고 보호소에 남아있는 동물들만 조회해야 하는데 여기에 ANIMAL_INS의 DATETIME 기준으로 ORDER BY를 걸어야 하고 모든 행을 조회하는 게 아니라 '3행'만 조회해야 한다!!! 내 풀이방법은 아래와 같은데 먼저 LEFT JOIN과 WHERE 문에 B.ANIMAL_ID IS NULL을 넣어 A에는 있지만 B에는 없는 값만 뽑아내면 총 4행이 나오는데 포인트는 ANIMAL_INS 테이블의 DATETIME 순으로 3행만 뽑아와야 한다는 것이다 ORDER BY A.DATE.. 2019. 9. 7.
프로그래머스 있었는데요 없었습니다 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 있었는데요 없었습니다 SQL : MySQL 문제 거지같이 만들어 놨는데 아니 그냥 설명하는 표에 한칸 더 파서 이름 한글로 박아놓으면 될거를 그걸 텍스트로 나열을 해서 찾아보게 해?? 아직도 보호 시작일하고 입양일이 헷갈린다 아 진짜 문제 답답하게 만드네 불평은 여기까지 하고 두 테이블의 DATETIME이 다른 만큼 ANIMAL_INS 테이블의 DATETIME > ANIMAL_OUTS 테이블의 DATETIME 이렇게 조회를 하라는 얘기다 마지막으로 ANIMAL_INS 테이블의 DATETIME으로 정렬을 한 후 제출해야 한다 내 풀이방법은 아래와 같은데 보호 시작일하고 입양일이 헷갈리는데 ANIMAL_INS 테이블의 DATETIME > ANIMAL.. 2019. 9. 6.
프로그래머스 없어진 기록 찾기 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 없어진 기록 찾기 SQL : MySQL 없어진 기록 찾기 문제는 두 테이블에서 ANIMAL_OUTS에만 들어있는 행 중 ANIMAL_ID와 NAME을 ANIAML_ID 순으로 출력하라는 내용인데 내 풀이방법은 아래와 같다 이 문제를 풀기 위해서는 JOIN에 대해서 알아야 하는데 JOIN이란? 두 테이블을 합치는 것인데 여러 JOIN이 있지만 이 내용은 출근해야 되니 차후 설명하고 LEFT JOIN은 다음과 같다 여기서 JOIN 후에 행이 엄청나게 많이 생기는데 기존에 ANIMAL_INS 테이블에서 없었던 내용들은 ID가 NULL 처리되어 들어오므로 WHERE 절에 IS NULL을 추가하면 ANIMAL_OUTS에는 있지만 ANIMAL_INS에는 없.. 2019. 9. 6.
프로그래머스 동명 동물 수 찾기 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 동명 동물 수 찾기 SQL : MySQL ANIMAL_INS 테이블에서 2번 이상 쓰인 NAME과 COUNT를 가져오는데 COUNT는 ANIMAL_INS에 존재하는 컬럼명이 아닌 COUNT(컬럼명)을 해서 갯수를 가져오고 이름을 COUNT(컬럼명) AS COUNT 이렇게 주라는 거다 그리고 이름이 2번 이상 쓰여야 한다고 했으니 조건절에 이걸 추가해줘야 한다 내 풀이방법은 아래와 같은데 먼저 ANIMAL_INS 테이블에서 NAME과 NAME을 COUNT 한 갯수를 구한뒤 COUNT로 명명한다 COUNT를 사용하기 위해서 GROUP BY NAME을 해 줘야 한다 이후 이 쿼리 내용을 괄호로 감싸야 하는데 WHERE 절에 COUNT(NAME)을 바로.. 2019. 9. 5.
프로그래머스 고양이와 개는 몇 마리 있을까 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 고양이와 개는 몇 마리 있을까 SQL : MySQL ANIMAL_INS 테이블에서 ANIMAL_TYPE 컬럼과 Cat, Dog 갯수를 count 컬럼으로 해서 가져와야 하는데 문제는 어떻게 가져오느냐 하는 것이다 내 풀이방법은 아래와 같은데 COUNT(컬럼)을 이용해 갯수를 구해오고 AS를 넣어 컬럼명을 COUNT로 정해준다 COUNT는 GROUP BY가 있어야 사용 가능한데 GROUP BY란? 컬럼 값이 같은 것 끼리 하나로 묶어준다는 거다 ANIMAL_TYPE으로 묶어놓으니 Cat과 Dog이 몇마린지 정리된 것이 보인다 마지막으로 프로그래머스에서 바로 사용 가능한 답안 코드는 아래와 같다 SELECT ANIMAL_TYPE, COUNT(ANIM.. 2019. 9. 5.
프로그래머스 이름이 없는 동물의 아이디 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 이름이 없는 동물의 아이디 SQL : MySQL 역시나 문제가 좀 이상한데 NAME이 NULL인 값만 조회하면 2행이 조회된다고 하는데 현실은 한 행만 조회된다 아마 테이블을 뭔가 잘못 설정하거나 답을 잘못 쓴 것 같은데.. 어쨌든 답을 구해보자면 NAME이 NULL이면서 ANIMAL_ID를 기준으로 오름차순 정렬을 시켜줘야 한다 내 풀이방법은 다음과 같다 NULL인 값만 가져오는 건 NAME = 'NULL' 이 아니라 NAME IS NULL 을 사용하는데 테이블 안에 NAME 컬럼에 NULL이 들어있다는 것이 아니라 텅텅 비어서 NULL이라고 뜬다는 것이다 그래서 IS NULL로 체크 가능하다 만약 NULL이 아니라면? IS NOT NULL로 .. 2019. 9. 4.

반응형