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"
的审计员的数量
我必须对不同的计数进行困难的过滤。
有这样的数据
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"
的审计员的数量