平均的 SQL 子查询
Posted
技术标签:
【中文标题】平均的 SQL 子查询【英文标题】:SQL Sub Query with Average 【发布时间】:2019-02-27 00:45:45 【问题描述】:我正在尝试回答以下问题:列出交易以及投资金额高于每个产品线平均投资金额的客户姓名。
我的数据样本如下:
产品线表
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)
【问题讨论】:
又是什么问题? @T.S.问题是:列出交易以及投资金额高于每个产品线平均投资金额的客户名称。 能否请您向我们展示所有 3 个表格的样本数据以及相应的预期结果,以便我们清楚地了解您的要求? 【参考方案1】:使用窗口函数:
select mSRSnum, mclientFname, mClientLname
from (select t.*,
avg(mAmount) over (partition by productline) as avg_mAmount
from Transaction t
) t
where mAmount > avg_mAmount;
【讨论】:
以上是关于平均的 SQL 子查询的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery SQL:使滚动平均子查询或加入对大型数据集更有效