문제 내용
1. 동물 이름과 쓰인 횟수를 같이 조회 -> Group By 사용
2. 횟수가 두번 이상인 것만 조회 -> having 사용
3. 이름이 없는 동물은 집계에서 제외 -> 1일차 Order by 설명참고
4. 결과는 이름순으로 조회 -> 1일차 Order by 설명참고
Group By
설명
SQL 쿼리에서 결과를 특정 컬럼을 기준으로 그룹화를 진행할 때 사용
이를 통해 중복된 데이터를 그룹별로 집계할 수 있으며, 일반적으로 집계 함수(COUNT, SUM, AVG, MAX, MIN 등)와 함께 사용된다.
기본문법
SELECT department, COUNT(employee_id) as employee_count
FROM employees
GROUP BY department;
employees테이블내에 department 컬럼 기준으로 그룹화하여 department 각각의 employee_id를 카운터하여 나타낸다.
count 컬럼 name - employee_count
Having
HAVING은 GROUP BY로 그룹화된 결과에 조건을 적용할 때 사용된다,
WHERE 절과 유사하지만, WHERE 절은 그룹화되기 전에 행을 필터링하는 데 사용되고,
HAVING 절은 그룹화된 후 결과에 대해 조건을 적용된다 .
따라서, 그룹화결과에 대한 조건 WHERE 절이라고 생각하면 쉽다.
기본문법
SELECT department, COUNT(employee_id) as employee_count
FROM employees
GROUP BY department
HAVING COUNT(employee_id) >= 10;
문제정답
SELECT name, count(name) as COUNT
from animal_ins
group by datetime
having datetime > 1
order by name asc