sequelize.js - 如何计算列的值并按范围分组?

标签 sequelize.js

如果我在表中有一个年龄列,我如何检索落入 5 个范围的值的计数?

我目前有一个查询,它只获取年龄不为空或未定义的用户数。

User.findAll({
     where: {
       age: {
         [Op.not]: null,
         [Op.notIn]: ['null', 'undefined']
       },
     },
     group: ['age', 'count'],
     attributes: [
            ['age', 'label'],
            [Sequelize.fn('count', Sequelize.col('user_id')), 'count']
          ],
        })

电流输出:{label: 28, count: 86}
想要的结果:
ages: {
 0-20: 5,
 20-40: 39,
 40-60:28,
 60-80:11,
 80-100:3
}

最佳答案

所以最后我为此使用了文字查询:

User.findAll({
          where: {
            age: {
              [Op.not]: null,
              [Op.notIn]: ['u', 'undefined', 'x', '']
            }
          },
          attributes: [
            [Sequelize.literal('COUNT (CASE WHEN age < 20 THEN age END)'), '<20'],
            [Sequelize.literal('COUNT (CASE WHEN age >= 20 AND age <= 29 THEN age END)'), '20-29'],
            [Sequelize.literal('COUNT (CASE WHEN age >= 30 AND age <= 39 THEN age END)'), '30-39'],
            [Sequelize.literal('COUNT (CASE WHEN age >= 40 AND age <= 49 THEN age END)'), '40-49'],
            [Sequelize.literal('COUNT (CASE WHEN age >= 50 THEN age END)'), '≥50'],
            [Sequelize.fn('count', Sequelize.col('user_id')), 'count']
          ]
        }),

关于sequelize.js - 如何计算列的值并按范围分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56524242/

相关文章:

node.js - 防止 Sequelize 在执行查询时将 SQL 输出到控制台?

javascript - 如何使用 Sequelize 检索不属于多对多关联的所有记录

mysql - 为什么我无法在 Sequelize 中保存具有不同列值的多对多表?

javascript - 使用 postgresql 保存数组进行 Sequelize

javascript - 在 Sequelize 中不小心吞下了非空约束(可能是 bluebird 中的错误处理 promise 搞砸了)

mysql - 如何在sequelize中使用内连接

mysql - Sequelize - 检查与您的 MySQL 服务器版本相对应的手册以了解要使用的正确语法

javascript - Sequelize 在钩子(Hook)中获取请求数据?

typescript - 使用模型类创建一个条目

sequelize.js - sequelize 事务 - 请求只能在 LoggedIn 状态下进行,不能在 SentClientRequest 状态下进行