我有列的表:topic,person,published_date.我想创建一个查询,帮助我计算每个人在每个季度在特定主题中写的次数.例:
topic person published_date
'world' JS 2016-05-05
'world' JS 2016-05-10
'nature' AR 2016-12-01
Run Code Online (Sandbox Code Playgroud)
应该返回类似的东西
topic person quarter how_many_times
'world' JS 2 2
'nature' AR 4 1
Run Code Online (Sandbox Code Playgroud)
我可以按主题和人分组
select topic, person, published_date, count(*) from table group by topic, person, published_date
Run Code Online (Sandbox Code Playgroud)
但是小组如何发表日期?
jpw*_*jpw 11
假设它published_date是一个日期类型列,您可以使用如下extract函数:
select
topic,
person,
extract(quarter from published_date) as quarter,
count(*)
from
table1
group by
topic,
person,
extract(quarter from published_date)
order by
extract(quarter from published_date) asc
Run Code Online (Sandbox Code Playgroud)
如果日期可能属于不同年份,您可能希望将年份添加到select和group by.
Der*_*ill 10
如果您想要季度和年份,可以使用date_trunc:
SELECT
date_trunc('quarter', published_date) AS quarter
Run Code Online (Sandbox Code Playgroud)
这给出了四舍五入到季度开始的日期,例如2020-04-01,并且具有管道中的后续步骤可以像正常日期一样读取它的优点。
(这与extract ( )相比extract(quarter FROM published_date),extract ( ) 给出季度数,即 1、2、3 或 4。)
| 归档时间: |
|
| 查看次数: |
4181 次 |
| 最近记录: |