Maison > base de données > tutoriel mysql > Introduction à la méthode des statistiques MySQL par temps (exemple de code)

Introduction à la méthode des statistiques MySQL par temps (exemple de code)

不言
Libérer: 2019-02-01 10:14:39
avant
2410 Les gens l'ont consulté

Ce que cet article vous apporte, c'est une introduction à la méthode de données statistiques MySQL par temps (exemple de code). J'espère que les amis dans le besoin pourront s'y référer. vous être utile.

Lors de l'élaboration de statistiques de base de données, il est souvent nécessaire de compter les données en fonction de l'année, du mois et du jour, puis d'utiliser echarts pour créer des effets de visualisation.

Idées

  • Le principe de l'établissement de statistiques en fonction de la dimension temporelle est que la base de données doit contenir des informations sur le temps de rétention. Il est recommandé d'utiliser le type MySQL fourni avec datetime pour enregistrer le temps.

`timestamp` datetime DEFAULT NULL,
Copier après la connexion
  • La fonction principale de traitement de l'heure et de la date dans MySQL est DATE_FORMAT(date,format). Les paramètres disponibles sont les suivants

格式 描述
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位

Remarque  : Lorsqu'il s'agit de statistiques quotidiennes, vous devez utiliser %j, et si vous utilisez %d, %e, %w, puis les valeurs identiques de différents mois/semaines sont comptées ensemble.

  • implique d'obtenir l'heure actuelle, qui peut être obtenue via now() ou sysdate().

SELECT SYSDATE() FROM DUAL;
SELECT NOW() FROM DUAL;
Copier après la connexion
  • Utilisez simplement group by pour interroger en fonction des besoins réels.

Conclusion

La structure du tableau à compter est la suivante :

CREATE TABLE `apilog` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(64) DEFAULT NULL,
  `action` varchar(64) DEFAULT NULL,
  `params` text,
  `result` text,
  `timestamp` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
)
Copier après la connexion
  • Différentes catégories dans le temps statistique plageaction Le nombre de

    # 当日
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%j') = DATE_FORMAT(now(),'%j') ORDER BY count desc;
    # 当周
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc;
    # 当月
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc;
    # 当年
    SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc;
    Copier après la connexion
  • compte le nombre de dimensions temporelles d'une certaine catégorie action

    # 按日
    SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%j')
    # 按周
    SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%u')
    # 按月
    SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%m')
    # 按年
    SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%Y')
    Copier après la connexion

    compte à la fois action et dimensions temporelles en même temps

    # 按日
    SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%j')
    # 按周
    SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%u')
    # 按月
    SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%m')
    # 按年
    SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%Y')
    Copier après la connexion

Ce qui précède sont les statistiques temporelles les plus couramment utilisées. Pour plus de dimensions temporelles, vous pouvez vous référer au tableau des paramètres ci-dessus pour un traitement similaire.


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:segmentfault.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