sql-server - 卡在获取交易价值的计算
问题描述
我有一个事件表,想根据最近的交易值进行计算。
create table evt (evnt integer not null,
value integer not null,
time datetime not null,
)
和查询:
SELECT evnt ,value
FROM evt where time IN (select max(time) from events group by evnt )
GROUP BY evnt ,value
insert into evt values (2,5,'2018-05-09 12:42:00')
insert into evt values (4,-42,'2018-05-09 13:19:57')
insert into evt values (2,2,'2018-05-09 14:48:30')
insert into evt values (2,7,'2018-05-09 12:54:39')
insert into evt values (3,16,'2018-05-09 13:19:57')
insert into evt values (3,20,'2018-05-09 15:01:09')
输出
evnt | Value
-------------------
2 | -5
3 | 4
解决方案
根据您的简要描述,我想这就是您想要的
select evnt, sum(case when rn = 1 then value else -value end)
from
(
select *, rn = row_number() over (partition by evnt order by time desc)
from evt
) d
where d.rn <= 2
group by evnt
having count(*) = 2
推荐阅读
- javascript - Javascript - Plotly.js 数字频率按顺序排列
- maven - Maven 属性的 Gradle 等效项
- ethereum - 订阅ERC-20时出错(BAT,即Basic Attention Token)
- constructor - 为什么 Kotlin 有两种类型的构造函数?
- azure - 无法访问部署在 Azure ACS Kubernetes 集群中的 Web API
- git - Windows Linux 子系统 GIT 在未更改时显示更改
- android - 通过单击按钮将数据保存在 Realm 数据库中
- sapui5 - 使用 setDeferredGroups 后如何将 SAPUI5 中的 ODataModel 返回到其原始状态?
- amazon-web-services - Claudia.js 自动生成的 lambda 函数未显示在 AWS 控制台上
- python - 返回行中的最大值