我正在尝试找出一种方法来执行以下查询。
我有一个具有位值的表,我想计算bit =1
.
该表的一个例子是;
Job Name Active.
123 Smith. 1
123 Brown. 0
123 Jones. 1
123 Peters. 1
Run Code Online (Sandbox Code Playgroud)
我希望我的结果集看起来像这样
Job Active
123. 75%
Run Code Online (Sandbox Code Playgroud)
也就是说,对于工作“123”,75%(4 人中的 3 人)是活跃的......
数学部分很简单,3 / 4 * 100 = 75
但我必须首先获得 active = 1 的记录的计数值以及所有 123 条记录的计数。
结果中会有很多工作,因此我想为每个工作返回 1 条记录以及每个工作的计算值。
关于如何做到这一点的任何提示或示例都会很棒......
您可以在同一查询中使用聚合和 SUM(CASE)。
SELECT
Job,
SUM(CASE WHEN Active=1 THEN 1 ELSE 0 END) AS Active,
SUM(CASE WHEN Active=0 THEN 1 ELSE 0 END) AS Inactive,
COUNT(*) AS Total,
SUM(CASE WHEN Active=1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS [%Active],
SUM(CASE WHEN Active=0 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS [%Inactive]
FROM
job
GROUP BY
Job;
Run Code Online (Sandbox Code Playgroud)
工作 | 积极的 | 不活跃 | 全部的 | %积极的 | 不活跃百分比 |
---|---|---|---|---|---|
123 | 3 | 1 | 4 | 75.000000000000 | 25.000000000000 |
db<>在这里摆弄
归档时间: |
|
查看次数: |
339 次 |
最近记录: |