我的数据如下:
Name| Place| TS
A| AA| 12/25/2017 0:00
A| AA| 12/31/2017 0:00
A| AA| 1/10/2018 0:00
A| AA| 1/15/2018 0:00
A| AA| 1/31/2018 0:00
A| AA| 2/3/2018 0:00
A| AA| 2/5/2018 0:00
A| AA| 2/7/2018 0:00
A| AA| 2/8/2018 0:00
A| BB| 1/1/2018 0:00
A| BB| 1/22/2018 0:00
A| BB| 2/5/2018 0:00
我需要在这里完成的是计算一个人在某几天内到过一个地方的次数。例如,人A在7天内访问了AA 4次并且将BB放置1次(从今天算起)。我的预期结果应如下所示:
Name Place Last_Week Last_Month
A AA 4 7
A BB 1 2
以下是我目前的情况,但我很难将计数与条件进行汇总。请多多帮助和谢谢。
SELECT
Name, Place, COUNT(*)
FROM
SampleTable
GROUP BY
Name, Place, TS
HAVING
TS >= now()::date - 7
ORDER BY
Name, Place;
答案 0 :(得分:4)
您可以按名称和地点对数据进行分组,然后计算约束中日期的适合次数
select
name,
place,
sum(case when lw.TS >= now()::date - 7 then 1 else 0 end) last_week,
sum(case when lw.TS >= now()::date - 30 then 1 else 0 end) last_month
from sampleTable st
GROUP BY
Name, Place
order by name, place
答案 1 :(得分:2)