在 Sequelize 中计算列的数据

Counting a column's data in Sequelize

我在 Sequelize 中有两个 table 相互关联,我想计算以下

职位 table 列:'id'、'name'

工人 table colmuns: 'id', 'name', 'job_id'

假设我们现在有 5 个职位空缺,并且有很多与 job_id 相关的工作人员 我想显示作业的 'id'、'name' 并计算有多少工人具有相同的 job_id

示例:{id: 1, name: Engineer, count: 6};这意味着在工人的 table 6 名工人中有 job_id = 1

我的查询是这样的:

Jobs.findAll({
attribute:['id', 'name'],
include: [
    {
    model: Worker,
    attributes: [[Sequelize.fn('count', Sequelize.col('job_id')), 'count']]
    }
],
group: ['Job.id', 'Worker.id']
})

给我以下结果(不计):

[
   {
    "id": 7,
    "name": "Doctor",
    "users": []
   },
   {
    "id": 1,
    "name": "Engineer",
    "users": [
              {
               "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              },
              {
              "count": 1
              }
            ]
         },
     {
       "id": 4,
       "name": "Pilot",
       "users": []
     }
]

而它应该计算所有 job_id 用户,如下所示:

    "id": 1,
    "name": "Engineer",
    "count": 6

您必须像这样在作业属性中定义计数。

Jobs.findAll({
    attribute: ['id', 'name', [sequelize.fn("COUNT", sequelize.col('Worker.job_id')), "count"]],
    include: [
        {
            model: Worker,
            attributes: []
        }
    ],
    group: ['Worker.job_id', 'Job.id']
})

希望对您有所帮助。