我有一个表,目前我正在聚合每天200行的统计数据。这些统计数据包括用户#、使用X功能的人数等。
我想要做的是查询这个表,因此以这样的方式总结数据:
栏:
date是数据聚合的日期。value是我需要显示的数值(例如-#的用户)我希望用零填充空记录/日期,所以我需要使用mysql生成日期,然后在可用的情况下加入匹配的记录。如何使用mysql来确定去年的星期日?
不幸的是,我无法提供我目前所做工作的一个例子,我仍在研究潜在的解决方案。我遇到的大多数查询都是按日期查询记录,而不是生成日期本身。
我的桌子结构:
CREATE TABLE `daily_stats` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
`stat` int(11) NOT NULL,
`value` bigint(20) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `daily_stats_date_stat_unique` (`date`,`stat`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci发布于 2019-01-22 20:32:28
我没有足够的声誉来评论,但我认为这是你想要的。请参阅本文档中的“日期系列生成”。https://dev.mysql.com/doc/refman/8.0/en/with.html#common-table-expressions-recursive-date-series
启用日期序列生成的通用表表达式可在MySQL 8.0或MariaDB10.2.2中使用。如果您使用的是较早的版本,并且无法升级,我认为@McNets的回答是可行的。
https://dba.stackexchange.com/questions/227565
复制相似问题