当聚合函数为空时,Sequelize 获取结果

Posted

技术标签:

【中文标题】当聚合函数为空时,Sequelize 获取结果【英文标题】:Sequelize get results when aggregate function is null 【发布时间】:2021-02-11 08:58:40 【问题描述】:

我有以下返回客户的代码。问题是我只为已下订单并创建地址的客户获得结果。

CustomerModel.findAll(
    attributes: 
      include: [
        [db.sequelize.fn("COUNT", db.sequelize.col("orders.id")), "orderCount"],
        [db.sequelize.literal(`(
          SELECT o.createdDate
          FROM orders AS o
          WHERE
              o.customerId = customer.id
          ORDER BY o.createdDate DESC
          LIMIT 1
      )`),
      'latestOrderDate'],
      [db.sequelize.fn('sum', db.sequelize.col('orders.amount')), 'totalAmount'],
      ]
    ,
    include: [
       model: UserModel, as: 'user' ,
       model: AddressModel, required:false ,
       model: OrderModel, attributes: [], required:false 
    ]
  )

无论有订单或地址,是否有可能获得所有客户?

谢谢!

【问题讨论】:

【参考方案1】:

我最终将两个 sequelize.fn 更改为文字,它就像一个魅力!

【讨论】:

以上是关于当聚合函数为空时,Sequelize 获取结果的主要内容,如果未能解决你的问题,请参考以下文章

如果给定参数,猫鼬聚合过滤器

Redis使用:聚合类型为空时,会自动被Redis删除

Sequelize js如何获取关联模型的平均值(聚合)

如何使用单个 SQL 聚合函数查询为同一个聚合函数获取多个结果?

如何设置字符串字段不等于空字符串MongoDB聚合管道

在 Esqueleto 中获取聚合函数的结果