如何计算SQL中多行之间的差异
用户如何计算SQL中多行之间的差异,sql,sql-server,Sql,Sql Server,用户 Id Name --------------------- 1 Robert Baratheon 2 Cercei Lanister 3 Jon snow 交易 Id UserId Date Amount NewBalance NewTotal --------------------------------------------------------- 1 1 2020/03/21 100 100
Id Name
---------------------
1 Robert Baratheon
2 Cercei Lanister
3 Jon snow
交易
Id UserId Date Amount NewBalance NewTotal
---------------------------------------------------------
1 1 2020/03/21 100 100 100
2 1 2020/04/06 100 200 200
3 1 2020/04/07 25 225 225
4 2 2020/03/03 100 100 100
5 2 2020/04/07 30 130 130
6 3 2020/04/06 250 250 250
newBalance
是截至该日期所有金额的总和,newTotal
是截至该日期所有正金额的总和
我想订本周谁赚的钱最多
所需结果:
UserId UserName Amount_made_this_week
---------------------------------------------
1 3 Jon snow 250
2 1 Robert Baratheon 125
3 2 Cercei Lanister 30
我该如何用SQL编写呢?您可以汇总本周的
筛选金额,然后排序结果:
SELECT Transactions.UserId, Users.Name, Sum(Transactions.Amount) as amount_made_this_week
FROM Transactions
INNER JOIN Users
ON Transactions.UserID = Users.ID
WHERE Transactions.Date BETWEEN #04/05/2020# AND #04/11/2020#
GROUP BY Userid, Name
ORDER BY amount_made_this_week DESC;
您还可以将日期范围独立于绑定变量,始终设置一周的周期,如:
SELECT T.UserId, U.Name, Sum(T.Amount) as Amount_made_this_week
FROM Transactions T
INNER JOIN Users U
ON T.UserID = U.ID
WHERE T.Date > (SYSDATE-7)
GROUP BY Userid, Name
ORDER BY Amount_made_this_week DESC;
请展示一些样本数据和预期结果。你到底有什么问题?从约会中得到一周的时间?聚合行以获取其总和?还有什么?定义“本周”。今天加上最后六天,因为一周有七天?今天加上最后两天,因为今天是周三,一周从周一开始?一周是从上周日到现在,这是SQL Server的吗?在我看来像甲骨文。