gpt4 book ai didi

sql - 计算组内的不同值

转载 作者:行者123 更新时间:2023-12-03 22:16:45 25 4
gpt4 key购买 nike

给定一个像这样的表:

| JobId | Result |
|-------|--------|
| 1 | true |
| 1 | false |
| 1 | true |
| 1 | |
| 2 | false |
| 2 | false |
| 1 | true |
| 1 | true |
| 1 | true |

SQL 查询是否有可能生成这样的输出?
[{JobId: 1, true: 2, false: 1, undefined: 1},
{JobId: 2, true: 3, false: 2, undefined: 0}]

我目前正在使用 ORM Sequelize,但可以使用原始查询,这是我目前所拥有的。
db.JobResponse.findAll({
where: {
jobId: job
},
attributes: ['JobId', [fn('sum', col('result'))]],
group: ['JobId']
}).then(result => {
res.status(200).send({
data: result
});
})

目前它正在尝试 sum result 列,按 JobId 分组,但是,结果是一个 bool 值(预期值为真、假和未定义),所以简单的总和不起作用。是否可以对组内的每个不同值进行计数?

最佳答案

我认为一个基本的数据透视查询来聚合真、假和未定义的计数以及查询末尾的 FOR JSON AUTO 应该会生成你想要的结果:

SELECT
JobId,
SUM(CASE WHEN Result = 'true' THEN 1 ELSE 0 END) AS true,
SUM(CASE WHEN Result = 'false' THEN 1 ELSE 0 END) AS false,
SUM(CASE WHEN Result IS NULL THEN 1 ELSE 0 END) AS undefined
FROM yourTable
GROUP BY JobId
FOR JSON AUTO; -- convert each result record to a JSON element inside an outer array []

我实际上无法对此进行测试,因为 Rextester 和 SQLFiddle 似乎都不支持 SQL Server JSON 扩展。但是 this useful tutorial 似乎支持我给出的答案。

关于sql - 计算组内的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45587923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com