eme*_*aly 3 average sequelize.js
我正在尝试为所有具有相同“VenueId”的数据找到“评分”列的平均值。我让它使用原始代码,但需要在 Sequelize 中进行调整。工作原始代码是
SELECT venueId, AVG(rating) AS average FROM reviews GROUP BY VenueId
Run Code Online (Sandbox Code Playgroud)
我试过的代码是
Review.findAll({
order: [[Sequelize.fn('AVG', Sequelize.col('rating'))]]
}).then(function(Venues) {})
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
正在执行(默认):SELECT id, review, rating, createdAt, updatedAt, VenueId FROM Reviews AS Review ORDER BY max(rating); 未处理的拒绝 SequelizeDatabaseError: UNKNOWN_CODE_PLEASE_REPORT: ORDER BY 的表达式 #1 包含聚合函数并应用于非聚合查询的结果。
有任何想法吗?
这可能需要一些调整,因为我不知道您的模型,但我建议您尝试以下操作:
Review.findAll({
attributes: ['venueId', [models.sequelize.fn('AVG', models.sequelize.col('venue_id')), 'venueIdCount']],
group: 'venue_id'
order: [[models.sequelize.fn('AVG', models.sequelize.col('venue_id')), 'DESC']]
}).then(function() {
//Do something
}})
Run Code Online (Sandbox Code Playgroud)
需要注意的重要事项:当我使用“venueId”时,我指的是模型上的属性名称,而当我使用“venue_id”时,我指的是数据库表中列的名称。它们可能相同或不同,所以请随意调整它。