Prisma2, groupBy 日期

问题描述

我需要按日期对字段进行分组,我使用prisma 2,例如,过滤所有月份的寄存器,但我不知道在日期的情况下如何进行

Eu preciso agrupar os campos com um intervalo de data,por exemplo todos os registros dentro de um mês!

按正常字段过滤的示例

await this.record.groupBy({
        by: ['category'],where: {
            AND: [
                { user: id },{ account: { in: accountsIds } },{ category: { in: categoriesIds } },{ operation },],},sum: {
            amount: true,});

这还给我:

{ category: 27,sum: { amount: -45 } },{ category: 29,sum: { amount: 4400 } }

感谢您的帮助!

desde já agradeço qualquer ajudar!

解决方法

使用 Prisma 执行此操作绝对是困难的方法,即使可能。 Prisma 背后有一个数据库,它更适合这样的工作。对于示例,假设这是 postgresql。

对于特定问题,创建一个视图,例如

CREATE VIEW record_by_month AS
  SELECT date_trunc('month',YOURDATE) month,sum(amount) amount_by_month FROM YOURTABLE group by 1;

您必须添加您需要的其他字段。创建prisma模型,编写prisma查询,大功告成。

更多 prismaish 方式,也许值得一试,(特别是如果您将为此模型编写许多不同的月份组查询,如上所示)来仅为特定日期创建视图:

CREATE VIEW record_by_month AS
  SELECT distinct YOURDATE id,date_trunc('month',YOURDATE) month FROM YOURTABLE;

创建一个模型,用@relation 将其添加到原始表中,并摆弄groupBy 和include,编写类似by: [record_by_month.month] 的内容(不确定在当前版本中是否可行)。这种方法的明显优势(如果有效)是您不必复制模型的太多部分。