我试图选择日期相同时变化大于15%的行。
这是我要比较的数据库数据的示例。
id coin high24hr low24hr date
397 BTC_1CR 0.00030000 0.00030000 2016-06-10 08:39:26
525 BTC_LSK 0.00078898 0.00078898 2016-06-10 08:39:26
529 BTC_1CR 0.00030000 0.00030000 2016-06-10 08:48:05
657 BTC_LSK 0.00078884 0.00078884 2016-06-10 08:48:05
所以我想选择具有两次2016-06-10 08:39:26和2016-06-10 08:48:05的任何行。然后,如果两个硬币列的值相同。比较high24hr列值。如果差异大于15%,则返回差异。如果未返回0,则比较low24hr列值。如果差异大于15%,则返回差异。如果不返回0。
输出应类似于以下内容。如果大于15%,则显示百分比变化。
coin high low
BTC_1CR 20% 25%
BTC_LSK 30% 0
最佳答案
SQL使用集合操作,因此您通常不会考虑比较2个连续的行。但是,您可以使用以下查询执行类似操作:
declare @percent float
set @percent = 0.0000000000000000015;
select distinct t.coin,t.date,
(t1.high24hr-t.high24hr)/100.0 as high,
(t2.low24hr-t.low24hr)/100.0 as low
from YourTable t
left join YourTable t1 on
t.coin=t1.coin and t.date>t1.date and (t1.high24hr-t.high24hr)/100.0>@percent
left join YourTable t2 on
t.coin=t2.coin and t.date>t2.date and (t2.low24hr-t.low24hr)/100.0>@percent