Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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:获取另一个唯一id中每个唯一id的平均条目数_Sql_Sql Server_Average_Na - Fatal编程技术网

SQL:获取另一个唯一id中每个唯一id的平均条目数

SQL:获取另一个唯一id中每个唯一id的平均条目数,sql,sql-server,average,na,Sql,Sql Server,Average,Na,我使用的是MS SQL,我有一个如下表: dogid incident_id incident_flags 1 1 a 1 1 c 1 1 d 1 20 b 1 20 a 2 12 NA 2 14

我使用的是MS SQL,我有一个如下表:

dogid     incident_id     incident_flags
1         1               a
1         1               c
1         1               d
1         20              b
1         20              a
2         12              NA
2         14              a
2         14              b
我想了解每个dogid的每个事件标识的平均事件标识数。例如,我希望这个输出看起来像:

dogid     av_flags
1         2.5
2         1
这些是由以下人员发现的:

对于dogid1,我们有一个包含3个标志的incidentid和一个包含2个标志的incidentid。平均值(3,2)=2.5

对于dogid 2,我们有一个包含0个标志的incidentid(NA应计为0,在同一incidentid上不会出现另一个Incidention_标志),以及一个包含2个标志的incidentid。Av(0,2)=1

事件id对于每个dogid都是唯一的(比如说,在dogid 1和另一个dogid下,您永远不会得到事件id 1)。事件标志不会对一个事件重复(事件标识1下不能有两次“a”),但可以对其他事件重复,例如,可以为事件1和事件20获取事件标志“a”


我该怎么做?

使用聚合函数:

选择
多吉德,
av_标志=总和(事件标志为“NA”时,则为1,否则为0结束)/
(计数(不同事件识别号)*1.0)
来自tbl
按狗分组
SELECT
    dogid,
    av_flags = SUM(CASE WHEN incident_flags <> 'NA' THEN 1 ELSE 0 END)/ 
                (COUNT(DISTINCT incident_id) * 1.0) 
FROM tbl
GROUP BY dogid