如何删除重复值,然后使用SQL计算每个组的平均值?

时间:2019-12-05 22:16:19

标签: sql

数据包含三列,人员名称,组和分数。 每个人至少属于一个组,可以属于更多组。如果一个皮尔逊属于多个组,则该名称会出现多次,并且具有不同的组,但得分相同。 问题是,如果仅对每个人所属的第一个组进行计数,则如何计算每个组的平均分数。

1 个答案:

答案 0 :(得分:0)

SQL表表示一个无序集。除非某列中明确包含此信息,否则就没有一个人所属的第一组

您可以每人获取任意行,然后进行汇总:

select groupid, avg(score) as score
from (select t.*,
             row_number() over (partition by person order by groupid) as seqnum
      from t
     ) t
where seqnum = 1
group by groupid;

这将获取最低的组。如果您还有其他专栏,则可以通过更改order by来获取最早或最新的专栏。