我是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
我的本能是通过子查询来攻击它,但是环顾四周似乎暗示着循环可能是解决之道。
无论哪种方式,我都无法尽力寻找正确方向的推动力。
编辑
基于我在键入此请求时出现的一个请求的补充问题。上面的一个变体将显示每月的累积总数(尽管我想我可以根据方法自己弄清楚这一点上面的内容- 我只是在与方法相关的情况下添加此内容。
如果我理解正确的话,你只是想GROUP BY在你的表中的年,月,对于有每一行action的create_entry:
GROUP BY
action
create_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;