2015-10-14 29 views
0

用户将使用下面的两个表被记录数据加入:导出用数据从多个表&Oracle中

USERS:

UserID UserName UserType 
    1 Tom  5 
    2 Mike 6 
    3 Joe  6 

RECORDINGS:

UserID Recording 
    1 10 
    1 15 

我希望使用单个查询来查找名称,以及由UserTy的每个用户所做记录的次数pe高于UserType的平均值。如果用户从未进行录制,则需要为0(不为空或不存在)。

我的方法是首先选择高于平均水平的用户,第二选择每个用户所做记录的次数,第三选择用户ID匹配的两个用户。有更直接的方法吗?

+0

1)挑用户其数量录音>记录的在整个表的平均数或2)挑用户的录像数>他/她的组中的记录的平均数。哪一个? –

回答

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 

请检查是否有效。

http://sqlfiddle.com/#!4/a03d2/5/0

相关问题