我这里有以下数据集
| ID | 钥匙 | 类别 | 平均时间_1 | 平均时间_2 |
|---|---|---|---|---|
| 1 | 1 | 10 | 10 | 20 |
| 2 | 1 | 20 | 30 | 40 |
| 3 | 2 | 10 | 10 | 50 |
| 4 | 2 | 20 | 60 | 70 |
我想创建一个查询,结果如下:
| 钥匙 | 平均时间_1 | 平均时间_1 |
|---|---|---|
| 1 | [{“类别”:10,“平均时间”:10},{“类别”:20,“平均时间”:20}] | [{“类别”:10,“avg_time”:20},{“类别”:20,“avg_time”:40}] |
| 2 | [{“类别”:10,“平均时间”:10},{“类别”:20,“平均时间”:60}] | [{“类别”:10,“avg_time”:50},{“类别”:20,“avg_time”:70}] |
这个想法只是以不同的方式重新表示值 colsavg_time_1和jsonb 值。avg_time_2
我目前正在努力查询存储在分区表中的数据块(按日期分区)
数据看起来像这样:
date, product_id, orders
2019-11-01, 1, 100
2019-11-01, 2, 200
2019-11-02, 1, 300
Run Code Online (Sandbox Code Playgroud)
我有数百个日期分区,每个日期有数百万行。
现在,例如,如果我想查询 2 周内产品 ID 1 和 2 的总订单,并按日期分组(以每个日期的图表显示),则数据库必须进行 2 周的分区,并且为他们获取数据。
当产品数量很大或所需的时间范围很长时,该过程可能会花费很长时间。
我读到 AWS Redshift 适合此类任务。我正在考虑将我的分区表(按日期聚合分析)转移到该技术,但我想知道这是否真的是我应该做的,以使这些查询运行得更快。
谢谢!
我正在尝试在PostgreSQL中执行以下操作
INSERT INTO blog_sums ( blog_id, date, total_comments)
SELECT blog_id, '2016-09-22', count(comment_id) as total_comments_update
FROM blog_comments
WHERE date = '2016-09-22'
GROUP BY blog_id
ON CONFLICT (blog_id ,date)
DO UPDATE SET blog_sums.total_comments = total_comments_update;
Run Code Online (Sandbox Code Playgroud)
我在日期+ blog_id上有唯一的密钥,我一直收到错误:
错误:列"total_comments_update"不存在
在这种情况下,我正在寻找"正确"的方式和最有效的方法来更新重复/冲突
我的桌子是
blog_comments (blog_id, comment_id, comment, date)
blog_sums ( blog_id, date, total_comments) . unique on blog_id+date
Run Code Online (Sandbox Code Playgroud)
谢谢