조건에 맞는 값을 조회하는 문제이다.

WHERE을 사용하였으며 나는 잘 몰라서 모두 OR로 풀었다.

SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS
 WHERE NAME = 'Lucy' OR NAME = 'Ella' OR NAME = 'Pickle' OR NAME = 'Rogan' 
 OR NAME = 'Sabrina' OR NAME = 'Mitty' ORDER BY ANIMAL_ID;

풀고 찾아보니 NAME IN ( ... ) 을 사용해서 풀는게 정석인것 같다.

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

이 문제가 그나마 가장 복잡했던것 같다.

GROUP BY와 EXTRACT를 사용해서 풀어야했다.

EXTRACT(추출값 FROM CAST(col AS type)) 의 형태로 사용하는데

추출 값에는 YEAR, MONTH, DATE, HOUR, MINUTE, SECOND 가 있으며 type은 DATE , TIMESTAMP를 사용한다.

-- 코드를 입력하세요
SELECT HOUR, COUNT(HOUR) AS COUNT
 FROM(SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) AS HOUR FROM ANIMAL_OUTS)
 GROUP BY HOUR HAVING HOUR >= 9 AND HOUR < 20 ORDER BY HOUR;

GROUP BY 로 COUNT를 조회하는 문제이다.

이미 GROUP BY 와 HAVING은 사용해본적이 있으므로 쉬웠다.

다만 Cat이 Dog 보다 먼저 나와야되서 ORDER BY를 사용해줘야했다.

SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count FROM ANIMAL_INS
 GROUP BY ANIMAL_TYPE HAVING ANIMAL_TYPE = 'Cat' OR ANIMAL_TYPE = 'Dog' ORDER BY ANIMAL_TYPE;

CASE를 이용하여 문자열을 변환하는 문제이다.

문자열 변환은 자주 보이므로 쉽게 풀었다.

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

DATETIME의 FORMAT을 변경해주는 문제이다.

ORACLE에서는 TO_CHAR을 사용하며, 사용법은 TO_CHAR(col, format) 이다.

이를 사용하여 원하는 col을 출력하면 된다.

SELECT ANIMAL_ID, NAME, TO_CHAR(DATETIME, 'YYYY-MM-DD') 
 FROM ANIMAL_INS ORDER BY ANIMAL_ID;

+ Recent posts