簡體   English   中英

需要棘手的SQL查詢幫助

[英]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_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經驗。

很抱歉這篇文章的篇幅,我希望這是有道理的。

我相信應該這樣做(盡管它會很慢且效率低下;我可能會在代碼中通過查找初始或最終情況,然后從那里開始工作來解決它):

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM