postgresql任务我似乎无法克服

时间:2016-02-14 21:25:23

标签: sql postgresql group-by aggregate-functions

Highschooler(ID , name , grade ); 
Friend(ID1 , ID2 ); 
Likes(ID1 , ID2 ); 

我想知道每个学生的平均朋友数量是多少?

2 个答案:

答案 0 :(得分:0)

select avg(count) 
from ( 
   select count(ID2) as count 
   from Friend 
   group by ID1 
) as FriendCount; 

我认为你所挣扎的部分是FROM子句中的内部查询。

答案 1 :(得分:0)

如果您的意思是基于id1的平均数,那么您可以这样做:

select count(*) / count(distinct id1) as avg_count
from friend;

我不是100%确定这是正确的解决方案。你可能想要:

select count(*) / count(distinct id1) as avg_count
from (select id1, id2
      from friend
      union all
      select id2, id1
      from friend
     ) f;

这取决于友谊在数据中是否是互惠的。