MySQL에서 Datetime 열만 날짜별로 그룹화
이 자습서에서는 GROUP BY
절, COUNT()
및 DATE()
함수를 사용하여 MySQL에서만 DATE
유형 열을 DATE
로 그룹화합니다.
GROUP BY
, COUNT()
및 DATE()
를 사용하여 DATE
열을 DATE
로 그룹화
계속 진행하기 전에 DATETIME
값은 YYYY-MM-DD hh:mm:ss
형식이고 DATE
값은 YYYY-MM-DD
형식임을 기억하십시오. 열의 데이터 유형이 DATETIME
인 경우에만 DATE
별로 데이터를 그룹화하려고 합니다.
students
와 student_attendance
라는 두 개의 테이블을 생성합니다. students
테이블에는 모든 학생에 대한 기본 세부 정보가 있고 student_attendance
테이블에는 STUDENT_ID
및 ATTENDANCE
가 속성(열)으로 포함되어 있습니다.
학습 목적으로 아래 쿼리를 사용하여 두 테이블을 모두 만들 수도 있습니다.
예제 코드(테이블 만들기):
# Create a `students` table
CREATE TABLE students(
ID INT NOT NULL PRIMARY KEY,
FIRSTNAME VARCHAR(45) NOT NULL,
LASTNAME VARCHAR(45) NOT NULL,
GENDER VARCHAR(10) NOT NULL
);
# Create a `student_attendance` table
CREATE TABLE student_attendance(
STUDENT_ID INT NOT NULL,
ATTENDANCE DATETIME NOT NULL,
FOREIGN KEY (STUDENT_ID) REFERENCES students(ID)
);
예제 코드(테이블에 데이터 삽입):
# Insert data into the `students` table
INSERT INTO students (ID, FIRSTNAME, LASTNAME, GENDER)
VALUES
(1, 'Mehvish', 'Ashiq', 'Female'),
(2, 'Thomas', 'Christopher', 'Male'),
(3, 'John', 'Jackson', 'Male');
# Insert data into the `stduent_attendance` table
INSERT INTO student_attendance (STUDENT_ID, ATTENDANCE)
VALUES
(1, '2022-05-02 08:15:10'),
(2, '2022-05-02 08:15:10'),
(3, '2022-05-02 08:15:10'),
(1, '2022-05-03 08:15:10'),
(2, '2022-05-03 08:15:10'),
(3, '2022-05-03 08:15:10'),
(1, '2022-05-04 08:15:10'),
(2, '2022-05-04 08:15:10'),
(3, '2022-05-04 08:15:10'),
(1, '2022-05-05 08:15:10'),
(2, '2022-05-05 08:15:10'),
(3, '2022-05-05 08:15:10'),
(1, '2022-05-06 08:15:10'),
(2, '2022-05-06 08:15:10'),
(3, '2022-05-06 08:15:10');
예제 코드(디스플레이 데이터):
SELECT * from students;
SELECT * from student_attendance;
출력(students
테이블용):
+----+-----------+-------------+--------+
| ID | FIRSTNAME | LASTNAME | GENDER |
+----+-----------+-------------+--------+
| 1 | Mehvish | Ashiq | Female |
| 2 | Thomas | Christopher | Male |
| 3 | John | Jackson | Male |
+----+-----------+-------------+--------+
3 rows in set (0.00 sec)
출력(student_attendance
테이블용):
+------------+---------------------+
| STUDENT_ID | ATTENDANCE |
+------------+---------------------+
| 1 | 2022-05-02 08:15:10 |
| 2 | 2022-05-02 08:15:10 |
| 3 | 2022-05-02 08:15:10 |
| 1 | 2022-05-03 08:15:10 |
| 2 | 2022-05-03 08:15:10 |
| 3 | 2022-05-03 08:15:10 |
| 1 | 2022-05-04 08:15:10 |
| 2 | 2022-05-04 08:15:10 |
| 3 | 2022-05-04 08:15:10 |
| 1 | 2022-05-05 08:15:10 |
| 2 | 2022-05-05 08:15:10 |
| 3 | 2022-05-05 08:15:10 |
| 1 | 2022-05-06 08:15:10 |
| 2 | 2022-05-06 08:15:10 |
| 3 | 2022-05-06 08:15:10 |
+------------+---------------------+
15 rows in set (0.04 sec)
DATETIME
열을 DATE
로 그룹화 MySQL에서만
월요일부터 금요일까지 수업에 참석한 학생 수를 확인하고 싶습니다. 다음과 같이 DATE
로만 그룹화합니다.
예제 코드:
SELECT COUNT(STUDENT_ID), DATE(ATTENDANCE)
FROM student_attendance
GROUP BY DATE(student_attendance.ATTENDANCE);
출력:
+-------------------+------------------+
| COUNT(STUDENT_ID) | DATE(ATTENDANCE) |
+-------------------+------------------+
| 3 | 2022-05-02 |
| 3 | 2022-05-03 |
| 3 | 2022-05-04 |
| 3 | 2022-05-05 |
| 3 | 2022-05-06 |
+-------------------+------------------+
5 rows in set (0.00 sec)
또는 ALIAS
를 사용하여 출력을 명확하게 만들 수 있습니다.
예제 코드:
SELECT COUNT(STUDENT_ID) AS NumbOfStudents, DATE(ATTENDANCE) AS DateOnly
FROM student_attendance
GROUP BY DATE(DateOnly);
출력:
+----------------+------------+
| NumbOfStudents | DateOnly |
+----------------+------------+
| 3 | 2022-05-02 |
| 3 | 2022-05-03 |
| 3 | 2022-05-04 |
| 3 | 2022-05-05 |
| 3 | 2022-05-06 |
+----------------+------------+
5 rows in set (0.00 sec)
위 쿼리에서 목표를 달성하기 위해서만 DATETIME
유형을 DATE
로 캐스트합니다. 아래에서 간략하게 설명하는 다양한 기능과 절을 사용했습니다.
MySQL COUNT()
함수
COUNT()
는 표현식의 개수를 반환하는 데 사용하는 집계 함수입니다. 특정 조건을 충족하는 모든 테이블 레코드를 계산할 수 있습니다.
COUNT()
함수의 반환 유형은 BIGINT
입니다. 테이블에 일치하는 레코드가 없으면 0
을 반환합니다.
SELECT
문과 함께 COUNT()
함수를 사용할 수 있는 세 가지 방법이 있습니다.
Count (*)
- 이 양식에 의해 생성된 출력에는 모든 중복,NULL
및NOT NULL
값이 포함됩니다.Count (expression)
- 이COUNT()
함수에서 반환된 레코드 수에NULL
값이 없습니다.Count (distinct)
- 표현식의 결과로NULL
값이 없는 개별 레코드의 수를 반환합니다.
MySQL DATE()
함수
DATE()
메소드는 DATETIME
표현식에서 DATE
만 추출합니다. 표현식이 유효한 DATETIME
또는 DATE
값이 아니면 NULL
을 반환합니다.
MySQL GROUP BY
절
GROUP BY
절은 동일한 값을 가진 레코드를 요약 레코드로 그룹화할 수 있습니다. 예를 들어, 수업에 있는 학생 수를 찾으십시오.
집계 함수와 함께 이 문을 사용하여 출력을 단일 또는 다중 필드(열)로 그룹화합니다.