我有如下数据:
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;
最佳答案
您可以按名称和地点对数据进行分组,然后计算日期符合您的约束条件的次数
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
关于sql - 在有条件的两列内计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48688974/