从多个表中导出数据&加入Oracle

时间:2015-10-14 03:51:15

标签: sql oracle

用户将使用以下两个表记录数据:

用户:

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

录制:

 UserID Recording
    1    10
    1    15

我想使用单个查询来查找名称,以及UserType高于UserType平均值的每个用户所做的录制计数。如果用户从未进行过录制,则需要为0(不为空或丢失)。

我的方法是首先选择高于平均水平的用户,第二个选择每个用户录制的录像数,第三个选择加入UserID匹配的两个用户。有更直接的方法吗?

1 个答案:

答案 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

请检查一下是否有效。

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