在PostgreSQL中传播每个人在每个特定日期的天数和重复次数



我在postgresql数据库中有这个表

id      name     time
1       poi      2018-05-13 08:45:48.846887
2       poi      2018-05-13 08:11:04.671437
3       roik     2018-05-14 16:32:04.671437
4       ceil     2018-05-14 17:38:04.671437
5       verk     2018-05-14 19:46:04.671437
6       roik     2018-05-16 08:21:04.671437
7       poi      2018-05-16 11:00:04.671437
8       roik     2018-05-18 14:40:08.671437
9       roik     2018-05-18 17:21:09.671664
10      verk     2018-05-13 08:46:04.671437
11      sant     ...
12      sant      ...
13      dmk       ...
14      roik      ...
15      poi       ...
...     ....     ...

我想要这样一张表:

name 2018-5-1 2018-5-2 2018-5-3 2018-5-4 2018-5-5 2018-5-6 2018-5-7 2018-5-8 2018-5-9 2018-5-10 2018-5-11 2018-5-12 2018-5-13 2018-5-14 ...
poi  0        3         3         7
roik 0        4         2         1
verk 0        2         0         9
sant 1        0         8         2
dmk  0        3         ...
...

这些数字代表每个人在每一天的重复次数 我该怎么做??提前谢谢你

这不是你想要的,但非常相似。您只需要将"date"列值转换为列本身,但是在查询所需的日期后,您可以在客户端上轻松完成。

https://www.db-fiddle.com/f/7r4AG9MV9zeZEjoU77fCfk/2

SELECT Test.name, SUM(CASE WHEN date(Test.time) = dates.date THEN 1 ELSE 0 END), dates.date FROM Test CROSS JOIN
(SELECT DISTINCT(date(time)) as date FROM Test) as dates
GROUP BY Test.name, dates.date

最新更新