sql,条件计数不同

sql, conditional count distinct

我必须对不同的计数进行困难的过滤。

有这样的数据

auditor - anomaly
Bob - s
Bob - n
Bob - n
Jon - n
Jon - n
Rob - s
Rob - n

我得数一数只有's'

的人数

这个计数是一个复杂查询的一部分,所以我正在寻找一种在 select 语句中内联执行它的方法:

SELECT
    SELECT      
            Office
        ,   SUM(OvverideRating)  AS [n. override]                   
        ,   COUNT(DISTINCT inspectorWithOverride) AS [n. auditor]
        ,   CAST(SUM(NonMotivato) AS FLOAT) / CAST(SUM(OvverideRating) AS FLOAT) [% on override]
        ,   COUNT(DISTINCT anomaly) AS [n. auditor with anomaly]
        ,   CAST(COUNT(DISTINCT anomaly) AS FLOAT) / CAST(COUNT(DISTINCT IspettoreConOverride) AS FLOAT) AS [% auditor with anomaly]    

FROM 
        (
        SELECT  DISTINCT
                Office  
            ,   activityID
            ,   CASE
                    WHEN [Override] ='S' THEN 1
                    ELSE 0
                END     AS OvverideRating
            ,   CASE
                    WHEN CAST(memCp_NoteTeamLeader AS NVARCHAR(MAX)) is not null AND [Override] ='S' THEN 1
                    ELSE 0
                END  AS Motivated
           ,    CASE
                    WHEN CAST(memCp_NoteTeamLeader AS NVARCHAR(MAX)) is null AND [Override] ='S' THEN 1
                    ELSE 0
                END AS NotMotivated
            ,   CASE
                    WHEN [Override] ='S' THEN strCb_IDIspettore
                    ELSE NULL
                END AS inspectorWithOverride
            ,   CASE
                    WHEN CAST(memCp_NoteTeamLeader AS NVARCHAR(MAX)) is null AND [Override] ='S' THEN strCb_IDIspettore
                    ELSE NULL
                END AS anomaly

        FROM ... complex subquery ...
        ) AS data
    GROUP BY 
        Office  

我是这样做的 我计算不同审计员的总数减去具有 "N"

的审计员的数量