Maison > base de données > tutoriel mysql > le corps du texte

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

WBOY
Libérer: 2023-05-31 23:04:48
avant
1138 Les gens l'ont consulté

    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');
    Copier après la connexion

    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;
    Copier après la connexion

    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;
    Copier après la connexion

    par semaine

    SELECT DATE_FORMAT(date_column, '%x-%v') AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;
    Copier après la connexion

    ou

    SELECT CONCAT(YEAR(date_column), '-', WEEK(date_column)) AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;`
    Copier après la connexion

    par mois

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
    Copier après la connexion

    ou

    SELECT CONCAT(YEAR(date_column), '-', MONTH(date_column)) AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
    Copier après la connexion

    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!

    Étiquettes associées:
    source:yisu.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal