【发布时间】:2016-11-15 18:37:25
【问题描述】:
我有一个包含客户记录的表 TableA。它还有一种称为“NAME”的特定类型。基本上每天都有几个新客户注册,并且此注册记录以“NAME”类型添加到数据库中。我目前需要的只是截至 15 日之前每天 8 月、9 月、10 月和 11 月的 NAME referenceid 的计数。
select count(referenceid)
from tableA
where type = 'NAME'
如果我需要整整一个月的计数,我会执行以下操作
select count(referenceid)
from tableA
where type = 'NAME'
and TIMESTAMP BETWEEN TO_DATE('01-AUG-16') AND TO_DATE('31-AUG-16')
我不确定如何自动获取上述所有月份的每日计数。如果没有自动化的方法,我将不得不每天运行几乎 90 多次相同的查询。
如果有人可以提供帮助,我将不胜感激。
【问题讨论】:
-
按日期分组
-
请注意,到目前为止仅使用 GROUP BY DATE 提供的解决方案将仅提供数据存在天数的计数。如果由于某种原因在特定日期没有注册新用户,则不会显示计数为 0。如果您确实想用 0 显示天数,则需要生成天数列表并相应地加入 - 这是一篇有用的文章 stackoverflow.com/questions/510012/…
-
@Chriz 我没有考虑到这一点。我可以在回答中使用您的建议吗?
-
@rbr94 当然,我对如何在 MySQL 中进行操作并不是很熟悉,如果能看到解决方案会很高兴!在 MSSQL 中,使用递归 CTE 非常容易!