用户将使用以下两个表记录数据:
用户:
UserID UserName UserType
1 Tom 5
2 Mike 6
3 Joe 6
录制:
UserID Recording
1 10
1 15
我想使用单个查询来查找名称,以及UserType高于UserType平均值的每个用户所做的录制计数。如果用户从未进行过录制,则需要为0(不为空或丢失)。
我的方法是首先选择高于平均水平的用户,第二个选择每个用户录制的录像数,第三个选择加入UserID匹配的两个用户。有更直接的方法吗?
答案 0 :(得分:1)
SELECT usr.UserID
,COUNT(rec.Recording) Count
FROM USers usr
,Recordings rec
,(SELECT AVG(UserType) average
FROM USers usr1) avg1
WHERE usr.Userid = rec.userid(+)
AND avg1.average < usr.UserType
GROUP BY usr.UserID
请检查一下是否有效。