在我们的数据库中,我们有机组人员和非机组人员。每个机组人员和非机组人员都可以有朋友。
例如,一名机组人员与4名机组人员和2名非机组人员成为朋友。
我想知道的是我们AirlineCode = LH机组的非机组成员的平均数量。
我们涉及两个表:
AppUser:存储用户数据的位置。
这里有牢房 AppUser.IsCrew(0 =非机组成员,1 =机组成员) AppUser.AirlineCode(某种形式)
关注者:朋友列表已存储
Follower.FromUserId Follower.ToUserId
我们在那里存储AppUser.Id = 1有5个朋友,并关注Follower.ToUserId 3、4、5,依此类推
问题在这里,我什至不知道如何开始:
查询要检查的内容
a)所有AppUser.IsCrew = 1且有Airline.Code = LH b)在“关注者”表中检查他们关注的用户数,但只有AppUser.IsCrew中的ToUserId = 0 =
以某种方式返回平均值
非常感谢您的帮助
答案 0 :(得分:0)
首先,您需要计算每个机组成员有多少非机组成员朋友。确保您也算出所有机组人员,即使他们没有任何朋友。
然后是对这些计数求平均值的问题。查询应如下所示:
with x as (
select
c.id, count(n.id) as nc_total
from AppUser c
left join Follower f on f.FromUserId = c.id
left join AppUser n on f.ToUserId = n.id and n.isCrew = 0
where c.isCrew = 1
and c.AirLineCode = 'LH'
group by c.id
)
select avg(nc_total) from x