Rumah  >  Artikel  >  pangkalan data  >  Apakah kaedah mengagregat statistik dalam format tarikh Mysql?

Apakah kaedah mengagregat statistik dalam format tarikh Mysql?

WBOY
WBOYke hadapan
2023-05-31 23:04:481089semak imbas

    Pengenalan

    Masa dan tarikh adalah keadaan pengumpulan biasa dan sering digunakan dalam pembangunan sebenar untuk memudahkan statistik data. Dalam MySQL, kita boleh menggunakan fungsi pemformatan tarikh untuk menukar tarikh kepada rentetan dalam format yang ditentukan, dan kemudian melaksanakan statistik kumpulan mengikut butiran masa yang diperlukan.

    Persediaan

    Sebelum kita bermula, kita perlu menyediakan jadual data ujian dan memasukkan beberapa data untuk memudahkan percubaan dan ujian seterusnya.

    CREATE TABLE `test` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(50) DEFAULT NULL,
      `created_at` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    INSERT INTO `test` (`name`, `created_at`) VALUES
    ('test1', '2022-01-01 00:00:00'),
    ('test2', '2022-01-02 00:00:00'),
    ('test3', '2022-01-02 12:00:00'),
    ('test4', '2022-01-03 00:00:00'),
    ('test5', '2022-01-07 00:00:00'),
    ('test6', '2022-01-08 00:00:00'),
    ('test7', '2022-01-09 00:00:00'),
    ('test8', '2022-01-10 00:00:00'),
    ('test9', '2022-01-14 00:00:00'),
    ('test10', '2022-01-15 00:00:00'),
    ('test11', '2022-01-16 00:00:00'),
    ('test12', '2022-01-17 00:00:00'),
    ('test13', '2022-02-01 00:00:00'),
    ('test14', '2022-02-02 00:00:00'),
    ('test15', '2022-02-03 00:00:00'),
    ('test16', '2022-03-01 00:00:00'),
    ('test17', '2022-03-02 00:00:00'),
    ('test18', '2022-03-03 00:00:00'),
    ('test19', '2022-04-01 00:00:00'),
    ('test20', '2022-04-02 00:00:00'),
    ('test21', '2022-04-03 00:00:00'),
    ('test22', '2022-05-01 00:00:00'),
    ('test23', '2022-05-02 00:00:00'),
    ('test24', '2022-05-03 00:00:00');

    Di sini kami mencipta jadual ujian bernama test dengan tiga medan id, name dan created_at. Di mana created_at mewakili medan jenis datetime yang merekodkan masa penciptaan. Kami memasukkan beberapa data ujian, termasuk data dari Januari hingga Mei 2022.

    Prinsip Pelaksanaan

    Apabila kita perlu mengumpulkan statistik berdasarkan tarikh, MySQL menyediakan banyak Fungsi tarikh terbina dalam, seperti YEAR (), BULAN(), MINGGU(), HARI(), JAM(), dsb. Fungsi ini mengumpulkan data mengikut tarikh dan mengira kuantiti yang sepadan.

    Untuk keperluan ini, kami ingin mengumpulkan mengikut tarikh dan mengira data untuk 7 hari, 4 minggu dan 3 bulan. Oleh itu, kita perlu menggunakan gabungan pemformatan tarikh dan fungsi tarikh.

    Pertama, kita perlu memformat tarikh ke dalam format yang sepadan. Anda boleh melakukan ini menggunakan fungsi DATE_FORMAT(), yang mengambil dua parameter: tarikh dan rentetan format. Tarikh boleh diformatkan sebagai "yyyy-MM-dd" seperti yang ditunjukkan di bawah, contohnya:

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name;

    Operasi sebenar

    Statistik mengikut hari

    Seterusnya, kita perlu Kumpulan tarikh dan mengira kuantiti. Ini boleh dicapai menggunakan klausa GROUP BY dan fungsi tarikh yang sepadan. Sebagai contoh, kita boleh mengira kuantiti harian yang dikumpulkan mengikut tarikh, seperti berikut:

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date, COUNT(*) AS count FROM table_name GROUP BY formatted_date;

    Mengira mengikut minggu

    SELECT DATE_FORMAT(date_column, '%x-%v') AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;

    atau

    SELECT CONCAT(YEAR(date_column), '-', WEEK(date_column)) AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;`

    Mengira mengikut bulan

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;

    atau

    SELECT CONCAT(YEAR(date_column), '-', MONTH(date_column)) AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;

    Atas ialah kandungan terperinci Apakah kaedah mengagregat statistik dalam format tarikh Mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam