SQL Partition By 计算净值
Posted
技术标签:
【中文标题】SQL Partition By 计算净值【英文标题】:SQL Partition By to calculate Net Value 【发布时间】:2020-04-23 09:01:13 【问题描述】:想象一个订单系统,有多个订单,两边分别是买入和卖出。 数据集是这样的
我想计算净值,即(所有买方的总和 - 所有卖方的总和)
预期输出:
我目前使用 Partition By 来得到以下输出
SELECT
[NAME]
,[Side]
,[Value]
,SUM([Value]) OVER (PARTITION BY [NAME],[Side]) as Net
FROM
[Order]
输出:
但我不知道如何减去这些值并得出预期的结果。
【问题讨论】:
【参考方案1】:您可以使用带有条件逻辑的窗口函数
select
t.*,
sum(case side when 'B' then value when 'S' then -value end)
over(partition by name) net
from mytable t
【讨论】:
以上是关于SQL Partition By 计算净值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Snowflake sql 中使用 partition by 和 order by 计算不同的值?
基于 OVER PARTITION BY 子句的 SQL 计算列
SQL 查询 - GROUP BY , PARTITION BY