본문 바로가기

Programmers/SQL

[Programmers/SQL] 없어진 기록 찾기 1. 테이블 구조 2. 문제 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. 3. 풀이 ANIMAL_OUT 테이블을 기준으로 ANIMAL_INS 테이블과 LEFT OUTER JOIN을 사용해서 ANIMAL_INS 테이블에서 존재하지 않는 ANIMAL_ID만 출력한다. SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS AS OUTS LEFT OUTER JOIN ANIMAL_INS AS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID WHERE INS.ANIMAL_ID IS NULL ORDER BY ANIMAL_ID ASC; [.. 더보기
[Programmers/SQL] NULL 처리하기 1. 테이블 구조 2. 문제 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요. 3. 풀이 IFNULL(체크할 속성, 대체할 값 또는 속성) 으로 NULL일 경우 다른 값 또는 속성으로 대체 반환할 수 있다. SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC; [참조] programmers.co.kr/learn/courses/30/lesson.. 더보기
[Programmers/SQL] 이름이 있는 동물의 아이디 1. 테이블 구조 2. 문제 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다. 3. 풀이 NULL이 아닌 이름은 NAME IS NOT NULL로 확인할 수 있다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC; [참조] programmers.co.kr/learn/courses/30/lessons/59407 코딩테스트 연습 - 이름이 있는 동물의 아이디 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, .. 더보기
[Programmers/SQL] 이름이 없는 동물의 아이디 1. 테이블 구조 2. 문제 동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다. 3. 풀이 NULL 체크는 IS NULL로 할 수 있다. SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID ASC; [참조] programmers.co.kr/learn/courses/30/lessons/59039 코딩테스트 연습 - 이름이 없는 동물의 아이디 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, IN.. 더보기
[Programmers/SQL] 입양 시각 구하기(2) 1. 테이블 구조 2. 문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 3. 풀이 데이터가 존재하지 않는 시각도 반환을 해야하므로, 0 ~ 23시를 나타내는 변수 @hour를 선언하고 @hour와 같은 시각을 가진 데이터를 중첩 SQL로 계산한다. SET @hour := -1; SELECT (@hour := @hour + 1) AS HOUR, ( SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour ) AS COUNT FROM ANIMAL_OUTS WHERE @hour < 23 .. 더보기
[Programmers/SQL] 입양 시각 구하기(1) 1. 테이블 구조 2. 문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 3. 풀이 시각별로 비교를 해야하므로 HOUR(DATETIME)을 사용한다. GROUP BY HOUR(DATETIME)으로 같은 시각을 묶고 ORDER BY HOUR(DATETIME)으로 시각을 오름차순으로 정렬한다. SELECT HOUR(DATETIME) AS HOUR, COUNT(DATETIME) AS COUNT FROM ANIMAL_OUTS WHERE 9 더보기
[Programmers/SQL] 동명 동물 수 찾기 1. 테이블 구조 2. 문제 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. 3. 풀이 같은 이름을 가진 동물로 묶기 위해 GROUP BY NAME을 사용하고 같은 이름이 둘 이상인 경우만 반환하기 위해 HAVING COUNT(NAME) >= 2를 사용하고, 이름 기준 오름차순 정렬을 위해 ORDER BY NAME ASC를 사용한다. SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME ASC; [참조] programmer.. 더보기
[Programmers/SQL] 고양이와 개는 몇 마리 있을까 1. 테이블 구조 2. 문제 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. 3. 풀이 동물의 종류를 지정하는 변수인 ANIMAL_TYPE을 기준으로 잡기 위해 GROUP BY ANIMAL_TYPE을 사용하고, ANIMAL_TYPE을 기준으로 오름차순으로 정렬해서 종류와 수(COUNT(ANIMAL_TYPE))를 출력한다. SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC; [참조] programmers.co.kr/learn/courses/30/lessons/59040 코딩.. 더보기