我使用over partition创建了一个包含SalespersonID, AvgLineProfit, AvgLineProfitPerSalesPerson的表。
select distinct
invoices.SalespersonPersonID,
sum(invoicelines.Quantity) over(partition by invoices.SalespersonPersonID) as QuantityPerSalesPerson,
avg(invoicelines.LineProfit) over() as AvgLineProfit,
avg(invoicelines.LineProfit) over(partition by invoices.SalespersonPersonID) as AvgProfitPerSalesPerson
from Sales.InvoiceLines as invoicelines
join Sales.Invoices as invoices on invoicelines.InvoiceID = invoices.InvoiceID
order by invoices.SalespersonPersonID
现在我想添加另一个列,如果AvgLineProfitPerSalesPerson>AvgLineProfit,否则为NULL。
如何在我的条件中使用创建的列?
我尝试创建新的选择查询或使用'case when'
case when AvgProfitPerSalesPerson > AvgLineProfit then SalespersonPersonID over() as new_column
但是它不工作。
下面是输出
AvgProfitPerSalesPerson不能在同一个select中引用别名。所以你必须重复整件事:
select ...
, case when avg(invoicelines.LineProfit) over(partition by invoices.SalespersonPersonID) > avg(invoicelines.LineProfit) over() then SalespersonPersonID end as new_column
或者在子查询中包装你的原始选择,然后它工作:
select *, case when case when AvgProfitPerSalesPerson > AvgLineProfit...
from (
select distinct
invoices.SalespersonPersonID,
sum(invoicelines.Quantity) over(partition by invoices.SalespersonPersonID) as QuantityPerSalesPerson,
avg(invoicelines.LineProfit) over() as AvgLineProfit,
avg(invoicelines.LineProfit) over(partition by invoices.SalespersonPersonID) as AvgProfitPerSalesPerson
from Sales.InvoiceLines as invoicelines
join Sales.Invoices as invoices on invoicelines.InvoiceID = invoices.InvoiceID
) x
order by SalespersonPersonID
就是这样的
select
new_table.SalespersonPersonID,
new_table.QuantityPerSalesPerson,
new_table.AvgLineProfit,
new_table.AvgProfitPerSalesPerson,
case when new_table.AvgProfitPerSalesPerson > new_table.AvgLineProfit then new_table.SalespersonPersonID
end as succesfull_salesperson
from
(select distinct
invoices.SalespersonPersonID,
sum(invoicelines.Quantity) over(partition by invoices.SalespersonPersonID) as QuantityPerSalesPerson,
avg(invoicelines.LineProfit) over() as AvgLineProfit,
avg(invoicelines.LineProfit) over(partition by invoices.SalespersonPersonID) as AvgProfitPerSalesPerson
from Sales.InvoiceLines as invoicelines
join Sales.Invoices as invoices on invoicelines.InvoiceID = invoices.InvoiceID) as new_table
order by SalespersonPersonID
相关内容
- 没有找到相关文章
最新更新
- 根据行名有条件地减去Pandas Dataframe行
- 如何使用QUdpSocket接收大量数据?
- javax - persistence:实体没有使用Java记录的主键
- 从Kaggle读取数据集
- 为grails中的hasMany字段设置XmlAttribute
- 从运输表中获取独特的车道
- Colab的生产率:直接从网络加载(例如:Kaggle)数据库还是将它们上传到colab目录,然后提取它们?
- 使用下拉列表中的名称
- 分析字符串,看是否有元音和两个连续的字母
- flutter应用程序在内部测试中崩溃(在我的手机上运行良好)
- 拉拉维尔简单授权 - 有时不起作用 - "Invalid credentials."
- 名称空间在引入c++ 98标准之前存在吗?
- 为什么模型文本不显示在html中?
- 仅在特定行上使用SUMPRODUCT的最佳方法?
- Quickblox扑动自定义对象更新不工作
- 机器人没有权限时的 discord.py 例外
- 如何以编程方式触发自动完成数据列表
- 是否有任何C实现中的指针不表示为指针指向的内存地址
- Eclipse调试器变量生命周期视图
- 我正在研究 SUMO,我使用 od2trips 工具从 OD 矩阵生成了一个行程文件,但我无法定义车辆类型
- 在CSS中设置不同的淡入时间和淡出时间
- startActivityForResult在Android Studio中不显示为弃用
- 我如何使用Typescript泛型来正确地将参数关联到我的函数?
- react -leaf -draw /无法以编程方式访问EditControl组件
- docker buildkit是否与挂载的docker一起工作.袜子和码头组合?
- 在Django中保存带有外键的对象时遇到问题
- 如何比较作为列表元素的字符串的字符?
- Facebook 登录 Django Rest Auth 给出"non_field_errors" : [ "Incorrect value" ]
- JFugue:获取音乐字符串时长
- 如何将RGB图像转换为NIR+RGB图像?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium