오늘은 SQL 강의 5주차를 앞두고 문제들을 풀었다.
이유는 나의 코딩 능력이 어떤지 알아보기 위해서이다.
20문제를 와다다다 풀었다.
가장 최근에 문제를 푼 사람에 내 이름이 도배가 되었을 때 희열은 이루 말할 수가 없다.
이 문제들을 풀면서 알게 된 것이 3개 있다.
하나씩 알아보자.
문제는 이러했다.
정답 코드는 다음과 같다.
SELECT NAME,
COUNT(1) CNT
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
GROUP BY 1
HAVING CNT>=2
ORDER BY 1;
여기서 알게 된 것은 HAVING이다.
HAVING은 그룹에 필터링 조건을 주는 것이다.
위의 문제로 미루어 보아 CNT가 2 이상일 경우만 출력하도록 하는 것이다.
다음은 LIMIT에 대해 알아보겠다.
LIMIT는 상위 n개의 데이터를 출력하는데 사용한다.
고로 문제의 정답 코드는 다음과 같다.
SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;
다음 코드는 DATE_FORMAT이다.
정답 코드는 이랬다.
SELECT ANIMAL_ID,
NAME,
DATE_FORMAT(DATETIME, '%Y-%m-%d')
FROM ANIMAL_INS
ORDER BY 1;
이때 Y가 소문자면 연도를 두 자리 수로 출력하고 대문자면 네 자리 수로 출력한다.
M가 대문자면 영어로 표기하고 소문자일 경우 숫자로 표현한다.
D도 M과 마찬가지이다.
이외에도 1강에서 배운 LIKE의 활용 방법을 까먹어서 상기시켰다.
문제를 푸느라 강의는 내일로 미뤘다.
문제만 푸는 것도 나름 공부에 도움이 되는 거 같다.