【问题标题】:SQL: Get average number of entries for each unique id within another unique idSQL:获取另一个唯一 ID 中每个唯一 ID 的平均条目数
【发布时间】:2015-09-14 02:20:40
【问题描述】:

我正在使用 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 的每个 event_id 的平均 event_flags 数。例如,我希望这个输出看起来像:

dogid     av_flags
1         2.5
2         1

这些是由以下人员找到的:

对于 dogid 1,我们有一个带有 3 个标志的事件 ID,以及一个带有 2 个标志的事件 ID。 Av(3, 2) = 2.5

对于 dogid 2,我们有一个带有 0 个标志的事件 ID(NA 应计为 0,它永远不会在同一事件 ID 上与另一个事件标志一起发生)和一个带有 2 个标志的事件。 Av(0, 2) = 1

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

我该怎么办?

【问题讨论】:

    标签: sql sql-server average na


    【解决方案1】:

    使用聚合函数:

    SQL Fiddle

    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
    

    【讨论】:

      猜你喜欢
      • 2023-01-27
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      相关资源
      最近更新 更多