javascript - 如何在postgres中查询过去四个星期的每周总和
问题描述
我试图在过去 7 天(day by day
)、过去 4 周(week by week
)和过去 12 个月(month by month
)之前查询此表。
我打算用 javascript 获取日期,逐个查询事务,然后在外面计算每个(周、天、月)的总和,然后创建一个数组来保存这些值。但我的胆量告诉我,可以通过 postgres db 查询获得大部分内容。
所以我的问题是,如果可以的话,是否有可能。
这是我想约会
const today = new Date();
const firstWeekEnd = new Date(today);
const secondWeekStart = new Date(today);
const secondWeekEnd = new Date(today);
const thirdWeekStart = new Date(today);
const thirdWeekEnd = new Date(today);
const fourthWeekStart = new Date(today);
const fourthWeekEnd = new Date(today);
function formatDate(date) {
let dd = date.getDate();
let mm = date.getMonth() + 1;
const yyyy = date.getFullYear();
if (dd < 10) { dd = `0${dd}`; }
if (mm < 10) { mm = `0${mm}`; }
date = `${yyyy} ${mm}= ${dd}`;
return date;
}
firstWeekEnd.setDate(firstWeekEnd.getDate() - 6);
secondWeekStart.setDate(secondWeekStart.getDate() - 7);
secondWeekEnd.setDate(secondWeekEnd.getDate() - 13);
thirdWeekStart.setDate(thirdWeekStart.getDate() - 14);
thirdWeekEnd.setDate(thirdWeekEnd.getDate() - 20);
fourthWeekStart.setDate(fourthWeekStart.getDate() - 21);
fourthWeekEnd.setDate(fourthWeekEnd.getDate() - 27);
我正在使用nodejs并续集
非常感谢任何帮助或想法
解决方案
您可以创建一个 CTE,它会生成名称和带有时区范围 ( tstzrange ) 的时间戳。然后使用operator 包含的元素将该 CTE 加入到您的表中。最后,对属于特定范围的人使用 SUM 函数。请参见此处的示例。
with date_ranges (range_name, range_dates) as
( values ('week_0', tstzrange ((now()-interval '6 days'), now(),'[]'))
, ('week_1', tstzrange ((now()-interval '13 days'), (now()-interval '7 days'), '[]'))
, ('week_2', tstzrange ((now()-interval '20 days'), (now()-interval '14 days'),'[]'))
, ('week_3', tstzrange ((now()-interval '27 days'), (now()-interval '21 days'),'[]'))
)
select range_name, range_dates, sum(amount) total_amount
from mytable mt
join date_ranges dr
on (mt.created_at <@ range_dates)
group by range_name, range_dates
order by range_name;
推荐阅读
- maven - Maven -T 线程数、Surefire 3.x 并行度和 Bamboo 5.x 单元测试总数
- javascript - javascript 代码无法将字符串从值转换为 int
- php - PHP检查图像文件是否存在然后将其保存到文件夹
- python - 是否可以在 Python 中另一个内部类的属性中引用内部类?
- typescript - 我可以定义一个具有与每个值的键对应的值约束的 Typescript 映射吗?
- lua - Roblox 中的“尝试使用 'Connect' 索引函数”是什么意思?
- visual-studio - 如何修复有关这些错误消息的命令提示错误?
- mysql - SQL 检查是否存在非唯一记录——如果存在,则更新;如果不是,则将记录插入表中
- node.js - Heroku 在尝试使用 https 时出现“连接关闭且没有响应”错误
- c# - 如何将位于应用程序部分 (DLL) 中的部分视图呈现到主 asp.net core 2.2 项目中