2016-06-10 47 views
0

我試圖選擇日期相同時變化大於15%的行。 這是我想要比較的db數據的一個例子。在db中比較行並選擇值是否大於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年6月10日8點39分26秒和2016年6月10日8時48分05秒的任何行。那麼如果2個硬幣列值是相同的。比較high24hr列值。如果差異高於15%,則返回差異。如果它不返回0.然後比較low24hr列值。如果差值大於15%,則返回差值。如果它不返回0.

而輸出應該是類似於以下內容。顯示百分比變化,如果它大於15%。

coin  high low 
BTC_1CR  20%  25% 
BTC_LSK  30%  0 
+0

你可以給給定的樣本添加所需的輸出嗎? –

+0

你只使用sql嗎?或者你是否將其與另一種語言配對?像PHP或類似? – Buildersrejected

+0

我會用這個。我敢肯定,我可以通過PHP的結果,並在那裏做我的邏輯。但我想知道是否有辦法在sql中這樣做。 – Prescient

回答

1

SQL使用set操作,因此您通常不會考慮比較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