如何在查询中进行计数/计算

1 sql-server

我正在尝试找出一种方法来执行以下查询。

我有一个具有位值的表,我想计算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 条记录以及每个工作的计算值。

关于如何做到这一点的任何提示或示例都会很棒......

McN*_*ets 5

您可以在同一查询中使用聚合和 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<>在这里摆弄