Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คำสั่ง MySQL จัดกลุ่มผลลัพธ์ตามวันที่ และนับจำนวนค่าซ้ำ

GROUP BY วันที่ และนับจำนวนเรคอร์ดซ้ำ

ใช้ DATE() เพื่อดึงเฉพาะส่วนวันที่จาก DATETIME แล้วจัดกลุ่มด้วย GROUP BY และนับด้วย COUNT()

สร้างตารางและข้อมูลตัวอย่าง

mysql> CREATE TABLE DemoTable1496 (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> PassengerCode VARCHAR(20),
    -> ArrivalDate DATETIME
    -> );
Query OK, 0 rows affected (0.85 sec)

mysql> INSERT INTO DemoTable1496(PassengerCode, ArrivalDate) VALUES
    -> ('202', '2013-03-12 10:12:34'),
    -> ('202_John', '2013-03-12 11:00:00'),
    -> ('204', '2013-03-12 10:12:34'),
    -> ('208', '2013-03-14 11:10:00'),
    -> ('202', '2013-03-18 12:00:34'),
    -> ('202', '2013-03-18 04:10:01');
Query OK, 6 rows affected

ข้อมูลทั้งหมด

+----+---------------+---------------------+
| Id | PassengerCode | ArrivalDate         |
+----+---------------+---------------------+
|  1 | 202           | 2013-03-12 10:12:34 |
|  2 | 202_John      | 2013-03-12 11:00:00 |
|  3 | 204           | 2013-03-12 10:12:34 |
|  4 | 208           | 2013-03-14 11:10:00 |
|  5 | 202           | 2013-03-18 12:00:34 |
|  6 | 202           | 2013-03-18 04:10:01 |
+----+---------------+---------------------+

คำสั่ง: จัดกลุ่มตามวันที่ (ของ ArrivalDate) และนับเฉพาะ PassengerCode ที่ขึ้นต้นด้วย '202'

mysql> SELECT DATE(ArrivalDate), COUNT(ArrivalDate)
    -> FROM DemoTable1496
    -> WHERE PassengerCode LIKE CONCAT('%', '202', '%')
    -> GROUP BY DATE(ArrivalDate);

ผลลัพธ์

+-------------------+--------------------+
| date(ArrivalDate) | count(ArrivalDate) |
+-------------------+--------------------+
| 2013-03-12        |                  2 |
| 2013-03-18        |                  2 |
+-------------------+--------------------+
2 rows in set (0.00 sec)

คำอธิบาย

  • DATE(ArrivalDate) - ดึงเฉพาะวันที่ (ตัดเวลาออก)
  • LIKE CONCAT('%', '202', '%') - ค้นหา PassengerCode ที่มี '202' อยู่ตรงไหนก็ได้
  • GROUP BY DATE(ArrivalDate) - จัดกลุ่มตามวันที่
  • COUNT(ArrivalDate) - นับจำนวนเรคอร์ดในแต่ละกลุ่ม

รูปแบบวันที่อื่นๆ ที่ใช้บ่อย

ฟังก์ชันผลลัพธ์ตัวอย่าง
DATE(col)2013-03-12
YEAR(col)2013
MONTH(col)3
DAY(col)12
DATE_FORMAT(col, '%Y-%m')2013-03