【发布时间】:2010-10-17 19:58:52
【问题描述】:
我觉得我以前看过这个问题,但是 SO 搜索和谷歌都没有帮助我......也许我只是不知道如何表达这个问题。我需要计算给定时间跨度内每天的事件数量(在本例中为登录),以便制作网站使用情况图表。到目前为止我的查询是这样的:
select
count(userid) as numlogins,
count(distinct userid) as numusers,
convert(varchar, entryts, 101) as date
from
usagelog
group by
convert(varchar, entryts, 101)
这完成了我需要的大部分工作(我在每个日期得到一行作为输出,其中包含该日期的登录总数和唯一用户数)。问题是,如果没有人在给定日期登录,则该日期的数据集中不会有一行。我希望它在行中添加指示这些日期的零登录。我可以想到两种方法来解决这个问题,但都没有让我觉得很优雅。
- 在结果集中添加一列,列出从周期开始到当前行日期之间的天数。在构建图表输出时,我将跟踪该值,如果下一行不等于当前行加一,则在图表中为缺失的每一天插入零。
- 创建一个“日期”表,其中包含感兴趣期间的所有日期并针对它进行外部联接。可悲的是,我正在开发的系统已经有一个用于此目的的表格,其中包含未来每个日期的一行......我不喜欢这样,我宁愿避免使用它,特别是因为table 用于系统的另一个模块,因此会引入对我当前正在开发的内容的依赖。
任何更好的解决方案或提示更好的谷歌搜索词?谢谢。
【问题讨论】: