根据列与另一列的关系获取SUM(SQL)

时间:2014-11-21 21:18:19

标签: mysql sql select sum case

因此,我们假设您拥有代表公司内员工的以下数据。第一列是其唯一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)。我一直绞尽脑汁试图找到一种方法来找到找到答案的方法,但到目前为止我一直在苦苦挣扎。

1 个答案:

答案 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;