数据包含三列,人员名称,组和分数。 每个人至少属于一个组,可以属于更多组。如果一个皮尔逊属于多个组,则该名称会出现多次,并且具有不同的组,但得分相同。 问题是,如果仅对每个人所属的第一个组进行计数,则如何计算每个组的平均分数。
答案 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
来获取最早或最新的专栏。