본문 바로가기
반응형

SQL/문제풀이29

프로그래머스 이름이 있는 동물의 아이디 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 이름이 있는 동물의 아이디 SQL : MySQL ANIMAL_INS 테이블에서 NAME이 NULL이 아닌 값을 조건으로 걸고 그 다음에 ANIMAL_ID를 오름차순 정렬해 조회하면 되는 문제다 내가 푼 방법은 아래와 같은데 WHERE 문에서 NAME IS NOT NULL을 걸어 NAME 컬럼에 빈값(NULL)이 들어있는 값을 빼고 ORDER BY ANIMAL_ID 를 걸어서 ANIMAL_ID 오름차순 순으로 가져오면 된다 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID 2019. 9. 9.
프로그래머스 입양 시각 구하기(2) 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 입양 시각 구하기(2) SQL : MySQL 이번 문제는 좀 어렵던데 풀긴 풀었지만 미개하게 풀었다 어쨌든 문제로 돌아가 0시부터 23시까지 시간대별로 행이 몇개씩 있는지 반환하는 문제인데 마지막에 조회 후 시간순으로 정렬을 걸어 반환해야 한다 내 풀이방법은 아래와 같은데 보면 알겠지만 복붙을 난사해서 굉장히 참혹하다 각 시간대별로 COUNT를 조회한 뒤 UNION ALL을 통해 합친다 이후 ()로 감싸 서브쿼리로 만든 후 밖에서 0시와 23시에 해당하는 HOUR만 조회하고 스크린샷에서는 잘렸는데 ORDER BY HOUR로 시간대별로 정렬한 후 반환한다 이렇게 푸는거는 풀 줄 모를때 이렇게 푸는 것이고 뭔가 분명히 좋은 방법이 있을 것이다 다만 .. 2019. 9. 9.
프로그래머스 입양 시각 구하기(1) 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 입양 시각 구하기(1) SQL : MySQL 이번 문제는 ANIMAL_OUTS 테이블에서 9시부터 19시 사이에 시간별로 DATETIME이 몇갠지 알아내서 반환하는 문제인데 포인트는 DATETIME을 어떻게 시간별로 가공하냐는 것이다 내 풀이방법은 아래와 같은데 GROUP BY HOUR(DATETIME)을 이용해서 DATETIME을 시간별로 나눌 수 있고 WHERE절에서 HOUR(DATETIME) >= 9 , HOUR(DATETIME) = 9 AND HOUR(DATETIME) 2019. 9. 9.
프로그래머스 중복 제거하기 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 중복 제거하기 SQL : MySQL ANIMAL_INS 테이블의 NAME 컬럼에서 값이 NULL이 아닌 행들을 NAME별로 묶은 후 COUNT 시켜 총 몇갠지 반환하라는 얘긴데 내 풀이방법은 아래와 같다 일단 서브쿼리를 사용하는데 NAME이 NULL이 아니고 NAME별로 GROUP을 해준 후 ANIMAL_INS 테이블의 NAME들만 조회하는데 이후 밖에서는 이 행들의 갯수만 COUNT(*)로 세주면 바로 끝이 난다 서브쿼리를 사용할 때 반드시 서브쿼리의 이름을 정해줘야 에러가 발생하지 않는다 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 SELECT COUNT(*) FROM ( SELECT NAME FROM ANIMAL_INS WHERE N.. 2019. 9. 9.
프로그래머스 동물 수 구하기 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 동물 수 구하기 SQL : MySQL ANIMAL_INS 테이블에 행이 총 몇개인지 구하는 문제다 예시 답안 부분에 COUNT가 보이는 만큼 COUNT를 사용해서 풀어주면 된다 마지막으로 컬럼명을 예시와 동일하게 count로 만들어 줄 필요는 없다 내 답안은 아래와 같은데 COUNT(*) 으로 존재하는 모든 행을 가져온다 만약 * 대신 COUNT(NAME) 이런 식으로 사용한다면 NAME 컬럼에 NULL이 들어있지 않은 행 갯수를 가져오게 될 것이다 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 SELECT COUNT(*) FROM ANIMAL_INS 2019. 9. 9.
프로그래머스 최댓값 구하기 풀이(MySQL) 사이트명 : 프로그래머스(Programmers) 문제명 : 최댓값 구하기 SQL : MySQL 내 생각에는 문제 이름이 굉장히 잘못됐다고 생각하는데 가장 최근에 들어온 동물인데 최댓값 구하기?? 이건 뭐.. 어쨌든 ANIMAL_INS 테이블에서 가장 최근에 들어온 값 하나만 조회해야 한다 그리고 DATETIME 컬럼을 '시간' 컬럼명으로 보이게 해야 한다 내 풀이방법은 아래와 같은데 ANIMAL_INS에서 DATETIME을 내림차순 기준으로 가져오면 가장 최근값이 맨 위로 올라오게 되는데 여기서 LIMIT 1로 한 행만 빼고 다 버린 뒤에 DATETIME AS 시간으로 DATETIME 컬럼명을 시간으로 바꾼 후 조회해주면 된다 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 SELECT DATETIM.. 2019. 9. 9.

반응형