如何在Sequelize中编写嵌套子查询

时间:2020-02-27 10:26:59

标签: postgresql sequelize.js

我是Sequelize的新手,并且坚持构建一个查询,我尝试使用Postgres查询,但是它无法在sequelize中构建相同的查询 下面是postgres查询

SELECT count, createdDate FROM ( select id,COUNT(*) as count, to_char("createdAt", 'DD-MM-YYYY') as createdDate from public.audit WHERE "createdAt" >= '2020-02-15' AND "createdAt"<= '2020-02-27' group by id,createddate) as a group by count,createdDate

此查询工作正常

下面是我到目前为止形成的Sequelize查询

{
  attributes:[
    'id',
    [Sequelize.literal('to_char("audit"."createdAt", \'DD-MM-YYYY\')'),'createdDate'], 
    [Sequelize.fn('COUNT','*'),'count']
  ],
  where: {
  createdAt:{ [Op.between]:['2020-02-15','2020-02-27']}
  },
    group:[
      'id',
      'createdDate'],
  raw : true , 
  nest : true 

}

此查询使我可以按用户ID进行计数,但现在我无法按计数和日期进行分组

我们非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我不了解您要开发的查询的目的。不管createdDate的值如何,count的值将始终为1,因为您已经在内部查询的group语句中包括了id

如果您需要一些语法,请参考以下代码-

  const companyDetails = Company.count({
    attributes: ['id', 'createdAt'],
    where: {
      createdAt: { [op.between]: ['2019-02-15', '2020-02-27'] }
    },
    group: ['createdAt']
  });