sql - 平均的 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)
解决方案
使用窗口函数:
select mSRSnum, mclientFname, mClientLname
from (select t.*,
avg(mAmount) over (partition by productline) as avg_mAmount
from Transaction t
) t
where mAmount > avg_mAmount;
推荐阅读
- mysql - 如何快速删除mysql中的重复记录
- c# - 你可以为类使用类似数组的构造函数吗
- google-analytics - Google Analytics:根据作为事件参数传递的字段对数据进行分类
- javascript - 将 javascript 板数组转换为 html tictactoe 板
- android - 不工作`ConstraintLayout`消失可见性
- javascript - mac-os:无法在 Firefox chrome 中运行量角器测试,它的工作正常
- go - 杜松子酒框架可以获取像`map[string]interface{}`这样的json post数据而不是与struct绑定吗?
- java - 无法使用 Scandit SDK 扫描某些条码 - Android
- python - Folium - 如何在可见的平移地图上调用 get_bounds()
- powershell - 加速 PowerShell 的测试连接