我有下面的桌子。我想数所有唯一的is,然后除以计数,其中角色是教师。
表A
ID Userid Role
1 A Teacher
2 b Teacher
3 c Student 就像下面这样。当角色=教师时计数(不同的id) /计数(不同的id)
发布于 2016-10-31 13:56:16
您可以使用一个简单的计数与聚合的CASE表达式不同。我已经转换成浮点数,以便结果返回小数,但是在应用到系统之前,您需要检查数据类型。
样本数据的临时表
CREATE TABLE #TestData (ID float, Userid nvarchar(1), Role nvarchar(7))
INSERT INTO #TestData
VALUES
(1,'A','Teacher')
,(2,'B','Teacher')
,(3,'C','Student')查询
SELECT
COUNT(distinct td.ID) DistinctID
,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END) Teachers
,CONVERT(float,COUNT(distinct td.ID)) / CONVERT(float,SUM(CASE WHEN td.Role = 'Teacher' THEN 1 ELSE 0 END)) FinalField
FROM #TestData td结果
DistinctID Teachers FinalField
3 2 1.5https://stackoverflow.com/questions/40343245
复制相似问题