提问者:小点点

如何在postgres中查询最近四周的每周总和


我试图按最近7天(逐日),最近4周(逐周)和最近12个月(逐月)查询此表。

我打算用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和sequelize

如有任何帮助或想法,我们将不胜感激


共1个答案

匿名用户

如果您正在PostgreSQL中寻找帮助您分组数据的某个函数,那么我有一个肯定的答案date_trunc('week',createdAt)。它返回一周中的第一天,您可以根据该天对数据进行分组,如下所示:

SELECT date_trunc('week', createdAt ) as start_of_week, sum(transactionTotal)
FROM <your_table_name_here>
GROUP BY date_trunc('week', createdAt )
ORDER BY date_trunc('week', createdAt )

从Sequelize.js开始,您应该使用原始查询来执行这样的SQL查询。