Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何计算;vki“;在SQL SERVER中_Sql Server - Fatal编程技术网

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?我已经测试了两个查询的执行计划,最后一个是最有效的。