具有平均的SQL子查询

时间:2019-02-27 00:45:46

标签: sql oracle subquery aggregate

我正在尝试回答以下问题:列出交易,并列出投资额高于每个产品系列平均投资额的客户。

我的数据示例如下:

产品线表

ProductLineID  ProdLine
1              Annuity
2              Disability Insurance
3              Life Insurance

产品表

Product     SupID   Commission PLID
10 Payments  107    45         3
20 Payments  107    45         3
Accent-Life  120    35         3

交易记录表包含以下列

mSRSnum  mClientLName mClientFname mProduct mAmount

我的代码如下。该代码吐出太多值错误。还有另一种方法可以回答上面的问题吗?

  select mSRSnum, mclientFname, mClientLname
  From Transaction
  where mamount > (select Prodline, AVG(mAmount) from Productline
  group by Prodline)

1 个答案:

答案 0 :(得分:0)

使用窗口功能:

select mSRSnum, mclientFname, mClientLname
from (select t.*,
             avg(mAmount) over (partition by productline) as avg_mAmount
      from Transaction t
     ) t
where mAmount > avg_mAmount;