express - 在 Sequelize 中分组和计数
问题描述
我在 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 函数:
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
推荐阅读
- r - 与上一时期相比,显示增加/减少值的变异列
- python - 使用 apt_pkg 以编程方式安装 debian 软件包时出错
- json - 如何将原始字典转换为 JSON 字符串?
- javascript - 如何使用 javascript 和 jquery 在 html 中动态创建 div 卡?
- elixir - 如何查看一个文件是从另一个文件导入还是作为入口点运行?
- networking - 当客户端尝试连接到接入点并且主路由器中有可用位置时重定向客户端
- ubuntu - SetupPOS 在 Linux Ubuntu 18.04 中找不到或加载主类 com.epson.pos.SetupPOS.SetupPOS
- asp.net-core - 使用 NET Core 和 EF Core 构建谓词
- asp.net - 如何使用管理 api 在 Auth0 用户日志中获取 location_info(国家名称)?
- hyperledger-fabric - Hyperledger Fabric 上的 Gossip 协议