* MYSQL 프로그램 기준으로 작성하였다.
GROUP BY절은 집계함수와 같이 사용된다.
COUNT 건수(행의 개수)
SUM 합계
AVG 평균
MAX 최댓값
MIN 최솟값
STDDEV 표준편차
VARIANCE 분산
GROUP BY절의 컬럼은 SELECT절에 있어야 하며, 컬럼 별로 집계함수를 구하고 싶을 때 GROUP BY절에서 사용하면 된다.
SELECT NAME, COUNT(*) AS COUNT
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT >= 2 AND NAME IS NOT NULL
ORDER BY NAME
HAVING절에 NAME에 대해 필요한 집계함수 조건을 입력하면 된다.
SELECT ANIMAL_TYPE, COUNT(*) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
HAVING COUNT(DISTINCT ANIMAL_TYPE)
각각 몇 마리인지 조회 -> 중복값을 없애야 한다.
SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d')AS HIRE_YMD
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME ASC
DATE_FORMAT에서 '%Y-%m-%d' 대소문자를 구분해서 작성해야 한다. m, d를 대문자로 사용할 경우 영어로 날짜가 출력된다.
DATE('2023-07-25')
2023-07-25 출력된다.
MONTH('2023-07-25')
7이 출력된다.
DAY('2023-07-25')
25가 출력된다.
WEEKDAY('2023-07-25')
주어진 날짜에서 요일에 해당하는 숫자가 출력된다.
월요일=0, 일요일=6이 출력된다.
LAST_DAY('2023-07-25')
주어진 날짜에서 해당 월의 마지막 날짜 정보가 출력된다.
HOUR('2023-07-25 07:41:25')
7이 출력된다.
MINUTE('2023-07-25 07:41:25')
41이 출력된다.
SECOND('2023-07-25 07:41:25')
25가 출력된다.
SELECT ADDDATE('2023-07-25', INTERVAL 5 DAY)
DATE에 날짜를 추가한 DATE값이 출력된다.
SELECT ADDTIME('2023-07-25 07:52:40', '10 08:05');
DATETIME에 10 08:05만큼 시간을 추가된 값이 출력된다.
SELECT SUBDATE('2023-07-25', INTERVAL 5 DAY)
DATE에 날짜를 뺀 DATE값이 출력된다.
SELECT SUBTIME('2023-07-25 07:52:40', '10 08:05');
DATETIME에 10:08:05만큼 시간을 뺀 값이 출력된다.
SELECT PERIOD_DIFF(202307, 202302)
두 기간의 차이를 숫자로 반환한다. 5가 출력된다.
SELECT DATEDIFF(CURDATE(), '2022-07-25');
두 날짜 사이의 일수를 숫자로 출력한다. 365가 출력된다.
SELECT TIMEDIFF('2023-07-25 07:51:40', '2023-07-20 07:51:40');
두 시간의 차이를 DATETIME형태로 출력된다.