首页 > 解决方案 > 平均的 SQL 子查询

问题描述

我试图回答以下问题:列出交易以及投资金额高于每个产品线平均投资金额的客户姓名。

我的数据样本如下:

产品线表

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)

标签: sqloraclesubqueryaggregate

解决方案


使用窗口函数:

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

推荐阅读