小编典典

按时间间隔对事件进行分组和计数,再加上运行总计

sql

我是Postgres的新用户,我敢肯定已经有了答案,但是我找不到。
我需要分析活动日志表中的一些数据,并将结果按时间段分组。

一个简单的问题版本是一个包含三个字段的表:

    Column    |           Type           |              Modifiers
--------------+--------------------------+-------------------------------------
 period_start | timestamp with time zone | not null
 user_id      | text                     | not null
 action       | text                     | not null

我要捕获的操作字符串可能是“ create_entry”(是的,我知道这很不错,因为它的数据库设计不错,但我坚持使用它)

我正在寻找的输出是一个报告,该报告按年份和月份显示了“ create_entry”操作的计数。就像是:

 Year | Month | Entries
------+-------+----------
 2013 |  12   | 14345
 2014 |   1   | 9876
 2014 |   2   | 10234

我的本能是通过子查询来攻击它,但是环顾四周似乎暗示着循环可能是解决之道。

无论哪种方式,我都无法尽力寻找正确方向的推动力。

编辑

基于我在键入此请求时出现的一个请求的补充问题。上面的一个变体将显示每月的累积总数(尽管我想我可以根据方法自己弄清楚这一点上面的内容-
我只是在与方法相关的情况下添加此内容。


阅读 208

收藏
2021-04-14

共1个答案

小编典典

如果我理解正确的话,你只是想GROUP BY在你的表中的年,月,对于有每一行actioncreate_entry

SELECT
  DATE_PART('YEAR', period_start) as Year,
  DATE_PART('MONTH', period_start) as Month,
  COUNT(*) as Entries
FROM activity_log
WHERE action = 'create_entry'
GROUP BY Year, Month;
2021-04-14