[英]Tricky SQL Query Help Needed
我最近寫了一些代碼來記錄來自博彩交易所網站的數據。 該代碼創建一個簡單的單表SQLite3數據庫。 該數據庫存儲游戲進行中時游戲的賠率。
.schema
看起來像這樣:
CREATE TABLE in_play (
status text,
date text,
marketID int,
marketName text,
total_matched real,
home_back real,
home_lay real,
away_back real,
away_lay real,
draw_back real,
draw_lay real
);
在表中status
可以是“ ACTIVE”或“ SUSPENDED”,我只想保留“ ACTIVE”市場。 我也有興趣查看最初繪制的游戲,然后以平局結束的游戲。 draw_back
值最初比away_back
和home_back
低,然后最終的draw_back
價格要低於第一個draw_back
價格。
為了更好地說明這一點,下面是查詢應找到的一個特定游戲的日志:
ACTIVE|2013-06-27 13:13:17.577877|109868503|Home Utd v Tanjong Pagar Utd|49905.54|6.2|6.4|9.6|11.0|1.33|1.34
ACTIVE|2013-06-27 13:14:18.413846|109868503|Home Utd v Tanjong Pagar Utd|49905.54|6.0|6.6|11.5|13.0|1.31|1.32
ACTIVE|2013-06-27 13:15:19.320099|109868503|Home Utd v Tanjong Pagar Utd|65377.29|7.0|7.4|14.0|16.5|1.22|1.25
ACTIVE|2013-06-27 13:16:20.180560|109868503|Home Utd v Tanjong Pagar Utd|65377.29|9.6|10.0|14.5|17.5|1.2|1.22
ACTIVE|2013-06-27 13:17:21.093332|109868503|Home Utd v Tanjong Pagar Utd|65377.29|10.5|30.0|15.5|40.0|1.15|1.17
ACTIVE|2013-06-27 13:18:21.912865|109868503|Home Utd v Tanjong Pagar Utd|65377.29|13.5|19.5|16.5|26.0|1.11|1.12
我想要一個查詢,選擇所有像這樣的游戲,並檢查它們是否有可能在平局中完成。 理想情況下,通過將完成平局的數字與未完成平局的數字相加,也可以將在此類游戲中的下注相加而得出的收益/損失。
到目前為止,我的查詢是
select *
from in_play
where status="ACTIVE"
and draw_back < away_back
and draw_back < home_back;
但是我沒有太多的SQL經驗。
很抱歉這篇文章的篇幅,我希望這是有道理的。
我相信應該這樣做(盡管它會很慢且效率低下;我可能會在代碼中通過查找初始或最終情況,然后從那里開始工作來解決它):
select * from in_play a, in_play b where a.status='ACTIVE'
and a.draw_back < a.away_back and a.draw_back < a.home_back
and b.marketID = a.marketID
and b.draw_back < a.draw_back
and a.date = (select min(c.date) from in_play c where c.marketID = a.marketID)
and b.date = (select max(d.date) from in_play d where d.marketID = a.marketID)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.