SQL:获取另一个唯一id中每个唯一id的平均条目数
我使用的是MS SQL,我有一个如下表: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
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