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

Sequelize.js 如何计算列的值并按范围分组?,sequelize.js,Sequelize.js,如果我在一个表中有一个年龄列,我怎样才能检索到5个范围内的值的计数 我目前有一个查询,它只获取年龄不为null或未定义的用户计数 User.findAll({ where: { age: { [Op.not]: null, [Op.notIn]: ['null', 'undefined'] }, }, group: ['age', 'count'], attributes: [

如果我在一个表中有一个年龄列,我怎样才能检索到5个范围内的值的计数

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

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']
          ],
        })
电流输出:
{标签:28,计数: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']
          ]
        }),
User.findAll({
其中:{
年龄:{
[Op.not]:空,
[Op.notIn]:[u',“未定义”,“x',”]
}
},
属性:[
[Sequelize.literal('COUNT(当年龄<20岁时,则年龄结束)'),'=20,年龄=30,年龄=40,年龄=50,则年龄结束)'≥50'],
[Sequelize.fn('count',Sequelize.col('user_id'),'count']
]
}),

所以最后我使用了一个文本查询:

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']
          ]
        }),
User.findAll({
其中:{
年龄:{
[Op.not]:空,
[Op.notIn]:[u',“未定义”,“x',”]
}
},
属性:[
[Sequelize.literal('COUNT(当年龄<20岁时,则年龄结束)'),'=20,年龄=30,年龄=40,年龄=50,则年龄结束)'≥50'],
[Sequelize.fn('count',Sequelize.col('user_id'),'count']
]
}),