我在 PosGres 中有一个名为 Matches 的表,其中包含 match_name、room_full、game_completed、createdAt 列。我想计算由 createdAt 分组的 room_full 和 game_completed(只有年、月和日,而不是时间)。
我有按created_at 分组的记录,只有年、月和日,但无法获得room_full 和game_completed 的计数。这是我的代码。
Match.findAll({paranoid:false,
where: {
createdAt: {
[Op.gte]: moment().subtract(7, 'days').toDate()
}
},
group: [db.sequelize.fn('date_trunc', 'day', db.sequelize.col('createdAt'))]
})
任何人都可以帮我解决这个问题。我希望它在折线图中表示。先感谢您。
最佳答案
在您的情况下,您应该使用 Sequelize functions :
Match.findAll({
paranoid: false,
group: [db.sequelize.fn('date_trunc', 'day', db.sequelize.col('createdAt'))],
attributes: [
db.sequelize.fn('date_trunc', 'day', db.sequelize.col('createdAt')),
[db.sequelize.fn('COUNT', 'game_completed'), 'game_completed_count'],
[db.sequelize.fn('COUNT', 'room_full'), 'room_full_count']
],
where: {
createdAt: {
[Op.gte]: moment().subtract(7, 'days').toDate()
}
},
})
或者,如果您的两个字段表示值而不是标志,则使用 SUM
而不是 COUNT
。
关于express - 在 Sequelize 中分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66386855/