gpt4 book ai didi

MySQL按天分组显示空天数

转载 作者:行者123 更新时间:2023-11-29 06:48:35 26 4
gpt4 key购买 nike

+-------------+---------------------+
| uid | date |
+-------------+---------------------+
| 35 | 01-11-2009 19:32:44 |
| 35 | 01-13-2009 22:33:49 |
| 42 | 01-23-2009 22:08:24 |
| 42 | 02-01-2009 22:33:57 |
| 35 | 02-01-2009 22:37:34 |
| 35 | 04-20-2009 15:23:49 |
+-------------+---------------------+

我想获取特定 uid 的每一天的计数,并显示空天数(在一个范围内):

User 35 (21 days)
01-11-2009 -> 1
01-12-2009 -> 0
01-13-2009 -> 1
01-14-2009 -> 0
01-15-2009 -> 0
01-16-2009 -> 0
01-17-2009 -> 0
01-18-2009 -> 0
01-19-2009 -> 0
01-20-2009 -> 0
01-21-2009 -> 0
01-22-2009 -> 0
01-23-2009 -> 0
01-24-2009 -> 0
01-25-2009 -> 0
01-26-2009 -> 0
01-27-2009 -> 0
01-28-2009 -> 0
01-29-2009 -> 0
01-30-2009 -> 0
01-31-2009 -> 0
02-01-2009 -> 1

到此为止

SELECT MONTHNAME(date), COUNT(uid) FROM cliques_referidos WHERE uid = 35 GROUP BY YEAR(date), MONTH(date), DAY(date)

如何获取中间几天的 0 计数?

最佳答案

假设这是一个选项,请考虑创建一个日期查找表。然后您可以轻松地使用 OUTER JOIN 来创建您的列表。这是一个 SO post关于它。

使用名为 datevalue 的日期字段调用查找表 datelookup,这应该可以工作:

SELECT MONTHNAME(d.datevalue), COUNT(cr.uid) 
FROM datelookup d LEFT JOIN
cliques_referidos cr ON d.datevalue = DATE(cr.date)
and cr.uid = 35
GROUP BY YEAR(d.datevalue), MONTH(d.datevalue), DAY(d.datevalue)

由于您的日期字段是日期时间,因此请在联接中使用 DATE()

如果您无法创建查找表,请考虑使用存储过程或函数,因为 MySQL 不支持递归 CTE。在 SO 中搜索一些示例。

关于MySQL按天分组显示空天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17076892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com