Gruppieren Sie die Datetime-Spalte nur nach Datum in MySQL

Mehvish Ashiq 16 Februar 2024
Gruppieren Sie die Datetime-Spalte nur nach Datum in MySQL

Dieses Tutorial verwendet die Klausel GROUP BY, die Funktionen COUNT() und DATE(), um die Spalte vom Typ DATETIME nur in MySQL nach DATE zu gruppieren.

Verwenden Sie GROUP BY, COUNT() und DATE(), um die Spalte DATETIME nur in MySQL nach DATE zu gruppieren

Bevor Sie fortfahren, denken Sie daran, dass die DATETIME-Werte wie YYYY-MM-DD hh:mm:ss aussehen, während die DATE-Werte das Format YYYY-MM-DD haben. Wir wollen die Daten nur nach DATE gruppieren, während der Datentyp der Spalte DATETIME ist.

Wir erstellen zwei Tabellen mit den Namen students und student_attendance. Die Tabelle students enthält grundlegende Details zu jedem Studenten, während die Tabelle student_attendance STUDENT_ID und ATTENDANCE als Attribute (Spalten) enthält.

Wir können zu Lernzwecken auch beide Tabellen erstellen, indem wir die Abfragen unten verwenden.

Beispielcode (Tabellen erstellen):

# 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)
);

Beispielcode (Daten in die Tabellen einfügen):

# 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');

Beispielcode (Anzeigedaten):

SELECT * from students;
SELECT * from student_attendance;

Ausgabe (für Tabelle students):

+----+-----------+-------------+--------+
| ID | FIRSTNAME | LASTNAME    | GENDER |
+----+-----------+-------------+--------+
|  1 | Mehvish   | Ashiq       | Female |
|  2 | Thomas    | Christopher | Male   |
|  3 | John      | Jackson     | Male   |
+----+-----------+-------------+--------+
3 rows in set (0.00 sec)

Ausgabe (für Tabelle 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)

Gruppieren Sie die Spalte DATETIME nach DATE Nur in MySQL

Wir wollen überprüfen, wie viele Schüler den Unterricht von Montag bis Freitag besucht haben. Wir werden nur wie folgt nach dem DATUM gruppieren.

Beispielcode:

SELECT COUNT(STUDENT_ID), DATE(ATTENDANCE)
FROM student_attendance
GROUP BY DATE(student_attendance.ATTENDANCE);

Ausgang:

+-------------------+------------------+
| 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)

Alternativ können wir den ALIAS verwenden, um die Ausgabe klarer zu machen.

Beispielcode:

SELECT COUNT(STUDENT_ID) AS NumbOfStudents, DATE(ATTENDANCE) AS DateOnly
FROM student_attendance
GROUP BY DATE(DateOnly);

Ausgang:

+----------------+------------+
| 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)

Wir wandeln den Typ DATETIME nur in DATE um, um das Ziel in der obigen Abfrage zu erreichen. Wir haben verschiedene Funktionen und Klauseln verwendet, die im Folgenden kurz erklärt werden.

MySQL-Funktion COUNT()

COUNT() ist eine Aggregatfunktion, die wir verwenden, um die Anzahl des Ausdrucks zurückzugeben. Damit können wir alle Tabellendatensätze zählen, die eine bestimmte Bedingung erfüllen.

Der Rückgabetyp der Funktion COUNT() ist BIGINT. Es gibt 0 zurück, wenn es keine übereinstimmenden Datensätze in der Tabelle gibt.

Es gibt 3 Möglichkeiten, wie wir die Funktion COUNT() mit der Anweisung SELECT verwenden können.

  1. Count (*) – Die von diesem Formular erzeugte Ausgabe enthält alle doppelten, NULL- und NOT NULL-Werte.
  2. Count (Ausdruck) - Die Anzahl der Datensätze, die von dieser Funktion COUNT() zurückgegeben wird, hat keine NULL-Werte.
  3. Count (distinct) – Gibt die Anzahl der unterschiedlichen Datensätze zurück, die keine NULL-Werte als Ergebnis eines Ausdrucks haben.

MySQL-Funktion DATE()

Die Methode DATE() extrahiert nur das DATE aus dem Ausdruck DATETIME. Wenn der Ausdruck kein gültiger DATETIME- oder DATE-Wert ist, gibt er NULL zurück.

MySQL GROUP BY-Klausel

Die Klausel GROUP BY kann die Datensätze mit denselben Werten in den Übersichtsdatensätzen gruppieren. Ermitteln Sie beispielsweise die Anzahl der in der Klasse anwesenden Schüler.

Wir verwenden diese Anweisung mit den Aggregatfunktionen, um die Ausgabe nach einzelnen oder mehreren Feldern (Spalten) zu gruppieren.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - MySQL Groupby