Sql server 如何计算;vki“;在SQL SERVER中
我们有这样一张桌子:Sql server 如何计算;vki“;在SQL SERVER中,sql-server,Sql Server,我们有这样一张桌子: HospitalCode kcode k ------------------------------ 234 COO1 0.5 234 COO1 0.5 234 C002 2.4 234 C003 1.5 123 C001 0.5 345 C004 1.0 567
HospitalCode kcode k
------------------------------
234 COO1 0.5
234 COO1 0.5
234 C002 2.4
234 C003 1.5
123 C001 0.5
345 C004 1.0
567 C001 2.2
345 C002 3.0
567 C002 2.4
我们要计算HospitalCode的vki。vki计算公式如下:
vki=(k*count(kcode))/totalCount(kcode)
例如,如果我们要计算此表中的vki,则如下所示:
HospitalCode kcode k
------------------------------
234 COO1 0.5
234 COO1 0.5
234 C002 2.4
234 C003 1.5
123 C001 0.5
345 C004 1.0
567 C001 2.2
345 C002 3.0
567 C002 2.4
234医院代码的vki:
(count of kcode is about in this table)
counts kcode of 234:
C001:2
C002:1
C003:1
vkiFor234=(2*0.5+1*1.5+1*2.4)/4=2.4
所以我们应该计算每个医院代码
我尝试了以下SQL Server代码:
SELECT HospitalCode,SUM(COUNT(kcode)*k)/COUNT(kcode) FROM myTable
GROUP BY HospitalCode
但这是行不通的
我们怎样才能做到这一点
谢谢我没有得到你的2.4,即使我在计算器上计算它,而这段代码生成的结果与我计算的值相同 这里有两种方法可以做到这一点
SELECT HospitalCode, SUM(Total) from
(Select distinct HospitalCode, (COUNT(kcode) OVER(PARTITION BY kcode order by HospitalCode) * k / COUNT(HospitalCode)
OVER(PARTITION BY HospitalCode order by HospitalCode)) AS Total from myTable) a
GROUP BY HospitalCode
ORDER BY HospitalCode
或
为什么这不起作用?有错误消息吗?为什么要计算
sum(COUNT(kcode)*k)
的sum
?这与你自己的vki公式不匹配。这是可行的,但给出的结果是错误的。你可能是对的。但是我们如何给出这个公式?你确定答案必须是2.4吗?因为我计算它是1.225?我已经测试了两个查询的执行计划,最后一个是最有效的。