SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE
GROUP BY
: 특정 컬럼을 그룹화
HAVING
: 특정 컬럼을 그룹화한 결과에 조건을 거는📌
WHERE
와HAVING
의 차이
WHERE
는 그룹화 하기 전,HAVING
은 그룹화 된 후의 조건EX.
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화 할 컬럼
SELECT 컬럼 FROM 테이블 WHERE 조건식 GROUP BY 그룹화 할 컬럼 HAVING 조건식
SELECT NAME, COUNT(NAME) AS 'COUNT'
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME
GROUP
으로 묶은 후 조건을 줄 땐 HAVING
절 사용 (WHERE
이 아닌)
AS
를 이용해 이름을 바꿔주기
SELECT HOUR(DATETIME) HOUR, COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR
HOUR(DATETIME) HOUR
: 조회 결과 나온 열의 이름을 HOUR로 설정
COUNT(DATETIME) COUNT
: 조회 결과 나온 열의 이름을 COUNT로 설정
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
SET
: 어떤 변수에 특정 값을 할당하는 것(변수 선언)
EX.SET @var=1;
,SET @var:=1;
,SELECT @var:=1
:=
: MySQL에서 대입 연산자로만 사용
HOUR
변수를 -1로 선언해놓고 22까지 1씩 증가시킴
그리고 DATETIME
의 HOUR
와 HOUR
변수 값이 동일할 때 행 카운트