因此,我们假设您拥有代表公司内员工的以下数据。第一列是其唯一ID,第二列是其主管的ID,第3列表示员工是否超过21.(Y表示他们超过21,N表示他们不是)
|Employee ID |Supervisor ID|Over21|
-----------------------------------
|1 |1 |Y |
|2 |1 |N |
|3 |1 |Y |
|4 |2 |Y |
|5 |2 |Y |
|6 |3 |N |
|7 |3 |N |
所以,如果我想找到超过21岁的员工人数,我可以很容易地做到:
SELECT SUM(CASE WHEN [Over21] IS 'Y' THEN 1 ELSE 0 END)
但是,让我们说你想找到拥有超过21岁的员工的主管人数。 (在这个例子中它将是2)。我一直绞尽脑汁试图找到一种方法来找到找到答案的方法,但到目前为止我一直在苦苦挣扎。
答案 0 :(得分:4)
select count (distinct Supervisor)
from your_tab
where Over21 = 'Y';
没有:
select count (distinct case when Over21 = 'Y' then Supervisor else null end)
from your_tab;