0

MySQL にインポートしたスプレッドシートがあります。ギャンブルのオッズ、つまり 2/1 または 7/2 を含む多数のエントリ行があります。残念ながら、ギャンブルのオッズは MySQL によって varchar として読み取られるため、計算を行うことができません。ギャンブルのオッズを 10 進数値に変換できるルックアップ テーブルを作成するよう提案されました。意味あり。わかりましたので、大きな問題は、これについてどうすればよいかということです。ギャンブルのオッズを一覧表示し、これらを 10 進数に等しいと見なす別のテーブルを作成する必要がある場合、テーブル 1 から 2/1 のオッズを持つすべての行を検索し、これに £1 を掛けるなどのクエリを作成するにはどうすればよいですか? . 何か提案はありますか?

4

3 に答える 3

1

可能なオッズの組み合わせは無限にあるため、ルックアップ テーブルを維持するのは難しすぎると思います。

代わりに、オッズを含むさまざまなフィールドを持つベース テーブルのビューを作成することを強くお勧めします。

create view v_table as
    select t.*,
           OddsTop*1.0/OddsBottom as OddsNumeric,
           OddsBottom*1.0/(OddsTop + OddsBottom) as OddsPvalue
    from (select t.*,
                 cast(left(t.odds, locate('/', t.odds, '/')-1) as int) as OddsTop, 
                 cast(substring(t.odds, locate('/', t.odds)+1, 100) as int) as OddsBottom, 
          from t
         ) t

オッズに関するさまざまな情報を簡単に計算できます。ここでは、上位の数値、下位の数値、浮動小数点数としてのオッズ、および同等の p 値を取得する方法を示しました。

于 2012-05-16T04:02:26.720 に答える
0

これは実際には非常に興味深い質問です。私の2ビットは、「7/2」が実際には数字として使用されていないことを示唆しているため、国名全体の代わりに国コードが使用されるのと同じように、「コード」として解釈できます。オッズをキーとして使用し、乗算係数を数学で使用するために各行の列として使用して、ルックアップテーブルを使用する傾向があるかもしれません。また、使用する精度を制御したり、高オッズと低オッズのクエリを非常に簡単に実行したりすることもできます。

必ずしも私がここにいると言っているわけではありませんが、これは興味深いものです。

于 2012-05-16T00:20:14.373 に答える
0

私の知る限り、MySQL にはデータ型がありません。あなたが提案するように、別のテーブルを作成しないことをお勧めします。精度がそれほど重要でない場合は、特定の幅の 10 進数として格納し、10 進数値でクエリを実行できます。アプリケーション層でいつでも分数表現に戻すことができます。シンプルさが重要な場合は、それらを varchar として保存できます。関連する質問については、こちらを参照してください。

于 2012-05-15T23:15:54.337 に答える