首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有条件的Server计数除数

带有条件的Server计数除数
EN

Stack Overflow用户
提问于 2016-10-31 13:32:52
回答 1查看 1.1K关注 0票数 0

我有下面的桌子。我想数所有唯一的is,然后除以计数,其中角色是教师。

表A

代码语言:javascript
运行
复制
ID    Userid    Role
 1      A        Teacher
 2      b        Teacher
 3      c        Student 

就像下面这样。当角色=教师时计数(不同的id) /计数(不同的id)

EN

Stack Overflow用户

回答已采纳

发布于 2016-10-31 13:56:16

您可以使用一个简单的计数与聚合的CASE表达式不同。我已经转换成浮点数,以便结果返回小数,但是在应用到系统之前,您需要检查数据类型。

样本数据的临时表

代码语言:javascript
运行
复制
CREATE TABLE #TestData (ID float, Userid nvarchar(1), Role nvarchar(7))
INSERT INTO #TestData
VALUES
(1,'A','Teacher')
,(2,'B','Teacher')
,(3,'C','Student')

查询

代码语言:javascript
运行
复制
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

结果

代码语言:javascript
运行
复制
DistinctID  Teachers    FinalField
3           2           1.5
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40343245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档