본문 바로가기

SEO's Study69

프로그래머스 코딩테스트 :: 보호소에서 중성화한 동물 (MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이고, ANIMAL_OUTS 테이블은 동물 보호소에서 입양보낸 정보를 담은 테이블이다. 보호소에 들어올 당시에는 중성화 되지 않았지만, 보호소를 나갈 당시에는 중성화 된 동물의 ID와 생물 종, 이름을 조회하는 SQL문을 작성하시오. (단, ID순으로 정렬해야합니다) [나의 풀이] SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME FROM ANIMAL_INS a INNER JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.SEX_UPON_INTAKE != b.SEX_UPON_OUTCOME.. 2020. 9. 20.
프로그래머스 코딩테스트 :: 오랜기간 보호한 동물1 (MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이고, ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 정보를 담은 테이블이다. 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성하시오. 단, 결과는 보호 시작일 순으로 조회해야 합니다. [나의 풀이] 이 문제는 그간 공부해두었던 LEFT JOIN을 활용해 쉽게 풀 수 있었다. 더불어 지난 번 풀이했던 '없어진 기록 찾기' 문제를 생각하면 더욱 쉽게 풀이할 수 있을겁니다 :) 2020/09/20 - [Touss 스터디 노트/MySQL] - 프로그래머스 코딩테스트 :: 없어진 기록찾기(M.. 2020. 9. 20.
프로그래머스 코딩테스트 :: 있었는데요 없었습니다(MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이고, ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 정보를 담은 테이블이다. 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성하시오. 단, 결과는 보호 시작일이 빠른 순으로 조회해야 합니다. [나의 풀이] 앞선 문제 풀이 '없어진 기록찾기'와 같이 2개의 테이블을 활용해 문제를 푸는 내용으로 JOIN을 해보려 했으나 원하는 결과 값이 나오지 않았습니다. FULL OUTER JOIN을 통해 전체 데이터 중 ANIMAL_INS.DATETIME > ANIAML_OU.. 2020. 9. 20.
프로그래머스 코딩테스트 :: 없어진 기록찾기(MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이고, ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 정보를 담은 테이블이다. 천재지변으로 보호소에 들어온 기록이 유실되었다. 이때 유실된 동물의 ID와 이름을 SQL문으로 작성하시오. 단, ID 기준으로 정렬되어야 한다. 그동안 하나의 테이블로 정보를 추출해왔다면, 이번 문제부터는 2개의 테이블을 연관지어 비교해야만 결과 값을 구할 수 있습니다. 이렇게 두 개의 테이블을 연관짓는 것을 'JOIN 한다'라고 표현하는데, 이 JOIN의 종류부터 공부해야할 필요가 있습니다. JOIN의 종류는 아주 다양하게 있지만, 여기서는 INNER JOIN, OUTER.. 2020. 9. 20.
프로그래머스 코딩테스트 :: 이름이 없는 동물의 ID 구하기(MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이다. 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL문을 작성하시오. 단, ID는 오름차순으로 정렬되어야 한다. [나의 풀이] 동물의 이름이 NULL 값이 있는 데이터를 조회하기 위해서 NAME IS NULL or ' ' 조건을 넣어줍니다. NULLIF 함수를 사용해 NULLIF(NAME, ' ') IS NULL 조건으로 사용해도 무관한 것 같아요. [참고] NULLIF(NAME, ' ') IS NULL -> NAME 값이 ' '(공백)이면 NULL을 입력하고, 아니면 NAME의 값을 출력한다. 즉, NULLIF(A, B) I.. 2020. 9. 19.
프로그래머스 코딩테스트 :: 입양 시각 구하기2 (MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_OUTS 테이블은 동물 보호소에서 입양보낸 동물의 정보를 담은 테이블이다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성하시오. 단, 결과는 시간대 순으로 정렬해야합니다. [나의 풀이] 언뜻보면 입양 시각 구하기1과 같이 시간대 별 입양 건수를 count하는 일이지만, 테이블 내 없는 시각이 존재했다. 입양 시각만을 점검해보면 0시~6시, 20~23시 데이터가 없다.. 고로 없는 시간을 생성해줘야한다 ㅠㅠ 없는 시간을 생성하기 위해 별도의 로컬변수를 선언해준다. 나는 @TIME으로 로컬변수를 설정하겠다. 그리고 0~23시 데이터 추출을 위해 '@TIME := @TIME+1' 식을 .. 2020. 9. 19.
프로그래머스 코딩테스트 :: 입양 시각 구하기1(MySQL) [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_OUTS 테이블은 동물 보호소에서 입양보낸 동물의 정보를 담은 테이블이다. 09:00부터 19:59까지 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성하시오. 단, 결과는 시간대 순으로 정렬해야 함 [나의 풀이] 시간이 모두 노출되는 DATETIME에서 시간대를 추출하는 HOUR함수를 활용하기로 했다. 그리고 HOUR >=9 and HOUR < 20 과 같이 시간 제한을 입력한다. 시간을 순차적으로 활용하기 위해서는 Order by 컬럼명 ASC (ASC는 기본으로 설정되는 값이지만 공부를 위해 작성함) -- HOUR(DATETIME)의 변수 명을 HOUR로 설정 SELECT HOUR(DATETIME) .. 2020. 9. 18.
프로그래머스 코딩테스트 :: 동명 동물 수 찾기 [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이다. 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성하시오. 단, 결과는 이름이 없는 동물은 집계에서 제외하며, 이름 순으로 조회해주세요. [나의 풀이] NAME을 count하되 count한 값을 변수 num에 생성, num이 1보다 큰 값을 노출시킨다. SELECT NAME, count(*) as num from ANIMAL_INS Group by NAME HAVING num > 1 특정 문자열 제외 및 정렬은 이전 장에서 했으니 생략하겠음 SELECT NAME, COUNT(*) as num fr.. 2020. 9. 18.
프로그래머스 코딩테스트 :: 고양이와 개는 몇 마리 있을까 [접속 사이트] 프로그래머스 programmers.co.kr [문제] ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블이다. 동물보호소에 들어온 고양이와 개가 각각 몇마리인지 SQL문을 작성하시오. 단, 고양이보다 개를 먼저 조회하시오! [나의 풀이] count함수를 써서 ANIMAL_TYPE의 수를 구하고, Group by 함수로 컬럼이 같은 것 끼리 묶음 단, 고양이보다 개를 먼저 조회하기 위해 Group by 내부 정렬이 필요하므로 Group by '컬럼명' Order by '컬럼명' DESC 사용 SELECT ANIMAL_TYPE, count(ANIMAL_TYPE) from ANIMAL_INS Group by ANIMAL_TYPE Order by NAME DESC [실행.. 2020. 9. 18.