首页 > 解决方案 > sequelize 中的聚合函数

问题描述

我需要一个包含聚合函数的查询。我想计算每个活动的售票数量

我尝试了下面的代码

const data = await Items.paginate({
          page: offset.value,
          paginate: limit.value,
          where: itemType,
          include:[
            {model:ItemTypes},
            {model:ItemPayment,
              attributes: [[db.sequelize.fn('sum', db.sequelize.col('ItemPayments.numberOfTickets')), 'total']],
              group: ["ItemPayments.itemId"],

            }],
            raw:true
        });

但它给了我一个如下错误

In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'Items.id'; this is incompatible with sql_mode=only_full_group_by

标签: node.jssequelize.js

解决方案


添加separate : true并尝试再次执行查询

{   
    model:ItemPayment,
    attributes: [[db.sequelize.fn('sum', db.sequelize.col('ItemPayments.numberOfTickets')), 'total']],
    group: ["ItemPayments.itemId"],
    separate : true // <--------- HERE
}

推荐阅读