postgresql - 在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 ...
...
这些数字代表每个人在每一天的重复次数我该怎么做?提前谢谢你
解决方案
这不完全是您想要的,但非常相似。您只需要将“日期”列值转换为列本身,但您可以在查询所需日期后在客户端轻松完成。
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
推荐阅读
- python - 映射一个类似sql的查询来过滤python中的字典列表
- php - 自定义模块 Drupal 8 的 Twig 模板中的访问变量
- c# - 如何设置鼠标滚轮滚动以在具有焦点的组件上工作,而不是在鼠标指针所在的组件上工作?
- swift - 文件夹的 macOS 安全范围 URL 书签
- arrays - 要散列的 Ruby 字符串数组
- r - 在 tidy 中创建递归变量
- node.js - 返回应用程序时,Google oAuth 登录操作失败
- c++ - 使用与 openmp C++ 并行的循环计算矩阵中每一行的最小值
- python - 为什么会出现“NameError: name 'draw_Objects' is not defined”
- python - 如何在 Airflow 运算符中跳过任务?