Algorithm/Programmers

SQL - LEVEL 2

눈떠보니 월요일 2021. 8. 24. 00:19

Q1. 동물 보호소에 동물이 몇 마리 들어왔는지 조회하는 SQL 문을 작성

 

SELECT count(*) from ANIMAL_INS

 

Q2. 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성 (이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로)

 

SELECT COUNT(DISTINCT NAME) AS NAMECOUNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL

 

Q3. 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성 (이때 고양이를 개보다 먼저 조회)

 

SELECT animal_type, COUNT(animal_id) AS count FROM animal_ins
WHERE animal_type IN('Cat','Dog')
GROUP BY animal_type
ORDER BY animal_type ASC ;

 

Q4. 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수 (이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회)

 

SELECT NAME, COUNT(NAME) FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY NAME
HAVING COUNT(NAME) >= 2
ORDER BY NAME ASC

 

Q5. 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 09:00부터 19:59까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성 (이때 결과는 시간대 순으로 정렬)

 

SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR(DATETIME)

 

Q6. 입양 게시판에 동물 정보를 게시하려 한다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성 (이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시)

 

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS
ORDER BY ANIMAL_ID

 

 

 

 

Q7. 보호소의 동물이 중성화되었는지 아닌지 파악하려 한다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성 (이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시)

 

SELECT ANIMAL_ID, NAME, 
    CASE
    WHEN 
        SEX_UPON_INTAKE LIKE '%Neutered%' 
        OR SEX_UPON_INTAKE LIKE '%Spayed%'
    THEN 'O'
    ELSE 'X'
    END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

 

Q8. ANIMAL_INS 테이블에 등록된 모든 레코드에 대해, 각 동물의 아이디와 이름, 들어온 날짜를 조회 (이때 결과는 아이디 순으로 조회)

 

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, '%Y-%m-%d') AS DATETIME 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

Q9. 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회

 

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty');

 

Q10. 보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔다. 이 사람이 말하길 할머니가 기르던 개는 이름에 'el'이 들어간다고 한다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회 (이때 결과는 이름 순으로 조회. , 이름의 대소문자는 구분하지 않는다.)

 

SELECT ANIMAL_ID, NAME 
FROM ANIMAL_INS
WHERE ANIMAL_TYPE = 'Dog'
AND UPPER(NAME) LIKE UPPER('%el%')
ORDER BY NAME