我目前正在编写一个审计日志,以跟踪各种项目的版本历史记录,即跟踪实际更改以及说明更改类型(创建、更新或删除)的标记。
现在,每个项目还有一个“状态”列,显示该项目的状态(打开,同意,也许)。
必填查询:获取到现在每天的物品状态计数。所以输出应该是这样的:
day | status | count
---------------------
1 | open | 3
2 | open | 4
2 | maybe | 1
2 | agree | 2
3 | open | 2
3 | agree | 2
等等。我一直在努力从wc_audit_log
如下图所示的审核日志表 () 中构建此查询。还有其他列,但大多是文本,与此查询无关(恕我直言:)
我尝试过使用 和 的各种组合以及group by
函数,但似乎无法理解如何构建这个查询。最棘手的部分是关于版本控制的“日”边界和重复项。也就是说,完全有可能在同一天多次更新一个项目而没有任何状态更新,或者在同一天内转换多个状态。order by
year, dayofmonth, month
因此,在基于状态的重复项的情况下,将选择最新的时间戳项。即,如果一个项目被更新了两次并且两次状态都是“打开”,那么只需选择最后一个。重复计数很好,即如果该项目在同一天打开并同意,则可以在两个地方都计算它。
但是,我仍然无法弄清楚如何构建这样的查询。上面的图像应该只显示表的一部分,这些列是相关的,但也应该给出重复项等的想法。在我看来,这是一个不平凡的查询。
PS:标记为已删除的项目将不被考虑,因此不属于上表的一部分。但是,即使该项目已被删除但“过去”存在,上述情况仍然适用