2

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

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

按正常字段过滤的示例

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!

4

1 回答 1

0

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 查询,就完成了。

棱角分明的方式,也许值得一试,(特别是如果你会为此模型编写许多不同的月份组查询,如上所示)仅为特定日期创建视图:

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](不确定在当前版本中是否可行)。这种方法的明显优势(如果有效)是您不必复制模型的太多部分。

于 2021-08-10T20:26:04.880 回答