Maison  >  Article  >  base de données  >  Quelle est la méthode d’agrégation des statistiques au format de date Mysql ?

Quelle est la méthode d’agrégation des statistiques au format de date Mysql ?

WBOY
WBOYavant
2023-05-31 23:04:481089parcourir

    Introduction

    L'heure et la date sont des conditions de regroupement couramment utilisées et sont souvent utilisées dans le développement réel pour faciliter les statistiques de données. Dans MySQL, nous pouvons utiliser la fonction de formatage de date pour convertir la date en chaîne dans un format spécifié, puis effectuer des statistiques de groupe en fonction de la granularité temporelle requise.

    Préparation

    Avant de commencer, nous devons préparer un tableau de données de test et insérer quelques données pour faciliter nos expériences et tests ultérieurs.

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

    Ici, nous créons un champ de type datetime nommé test 的测试表,包含三个字段 idnamecreated_at。其中 created_at représentant l'heure de création de l'enregistrement. Nous avons inséré quelques données de test, y compris des données de janvier à mai 2022.

    Principe de mise en œuvre

    Lorsque nous devons regrouper des statistiques en fonction de dates, MySQL fournit de nombreuses fonctions de date intégrées, telles que ANNÉE(), MOIS(), SEMAINE. (), JOUR(), HEURE(), etc. Ces fonctions regroupent les données par date et comptent les quantités correspondantes.

    Pour cette exigence, nous souhaitons regrouper par date et calculer les données sur 7 jours, 4 semaines et 3 mois. Par conséquent, nous devons utiliser une combinaison de fonctions de formatage de date et de date.

    Tout d'abord, nous devons formater la date dans le format correspondant. Vous pouvez le faire en utilisant la fonction DATE_FORMAT(), qui prend deux paramètres : la date et la chaîne de format. La date peut être formatée comme « aaaa-MM-jj » comme indiqué ci-dessous, par exemple :

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

    Opération pratique

    Compter par jour

    Ensuite, nous devons regrouper et compter les quantités en fonction de la date. Ceci peut être réalisé en utilisant la clause GROUP BY et la fonction de date correspondante. Par exemple, on peut compter les quantités journalières regroupées par date, comme suit :

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

    par semaine

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

    ou

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

    par mois

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

    ou

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

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer