You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize按Vendor_name分组统计:需区分Total与大于0的Images、PDF计数

解决Sequelize分组统计中带条件计数的问题

你当前的代码里,COUNT(Images)和COUNT(Technicals_PDF)会统计所有非NULL的条目,不管字段值是不是0,所以和统计所有条目的Total结果一致。要实现只统计值大于0的条目,需要在COUNT里加入条件判断,让不满足条件的条目返回NULL(COUNT会自动忽略NULL值)。

直接修改attributes里的对应字段即可,用sequelize.where来过滤字段值大于0的情况:

const vendorSummary = await IndexData.findAll({
  group: 'Vendor_name',
  attributes: [
    'Vendor_name',
    // 统计所有条目(假设Item_number无NULL值)
    [sequelize.fn('COUNT', sequelize.col('Item_number')), 'Total'],
    // 仅统计Images值>0的条目
    [sequelize.fn('COUNT', sequelize.where(sequelize.col('Images'), '>', 0)), 'Images'],
    // 仅统计Technicals_PDF值>0的条目
    [sequelize.fn('COUNT', sequelize.where(sequelize.col('Technicals_PDF'), '>', 0)), 'PDF'],
  ],
});

原理说明:

  • COUNT(expr)只会统计expr不为NULL的行数,当字段值≤0时,sequelize.where(...)会返回NULL,这部分条目就不会被计入统计。
  • 这种方式既避免了用SUM导致的数值累加问题,又精准统计了符合条件的条目数量。

内容的提问来源于stack exchange,提问作者Kazeyoshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 04:34:58