2013-06-27 216 views
0

我最近寫了一些代碼,從博彩交易所網站記錄數據。該代碼創建一個簡單的一個表SQLite3數據庫。隨着遊戲的進展,該數據庫存儲遊戲的賠率。棘手的SQL查詢幫助需要

.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可以是「活動」或「掛起」,我只是想保持「活動」的市場。我也有興趣查看最初繪製的遊戲,然後以平局結束,即。 draw_back初始值低於away_backhome_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。

對不起,這篇文章的長度,我希望這是有道理的。

+3

我懷疑你應該在字符串文字周圍使用單引號而不是雙引號 - 即...... WHERE status ='ACTIVE'' ... – nurdglaw

回答

1

我相信這應該這樣做(儘管這將是緩慢和低效;我可能會通過尋找聲母或韻母的情況下,然後從那裏工作主要是解決它的代碼):

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) 
+0

謝謝,這是一個很好的開始!我想我會跟隨你的建議,我剛開始編寫一個Python腳本來連接數據庫並使用它來處理它。 – James