2015-10-14 48 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

相關問題