2017-03-31 8 views
0

私は、ユーザーがウェブサイト上で作るすべての賭け金を格納するテーブルを持っています。私の質問によると、2つの重要な列しかありません:すべてのユーザーに有効性を選択

+--------+--------+ 
| userid | status | 
+--------+--------+ 
|  2 |  0 | 
|  2 |  1 | 
|  2 |  1 | 
|  6 |  1 | 
|  6 |  1 | 
+--------+--------+ 

私はすべてのユーザーの勝ちベットのパーセンテージを計算したいと思います。 0は失われます。 1は勝利を意味します。

明らかにパーセンテージはベット/すべてのベットに当選します。

私は以下のクエリでそれを実行しようとしましたが、そうする必要はありません。

+--------+---------+ 
| userid | percent | 
+--------+---------+ 
|  2 | 80.0000 | 
|  6 | 80.0000 | 
+--------+---------+ 

それはすべてのベットの割合を数えています:

SELECT userid,(
(select count(id) as count_won from bets where status=1) 
/
(select count(id) as count_all from bets where status!=-1)) * 100 as percent FROM bets group by userid; 

は、私は結果を取得しています。どのように私はすべてのユーザーのための計算を行うことができますか?

私はWHERE句をuseridで追加することができますが、計算した後、単純に結果をパーセンテージで並べ替えたいので、これをやりたくありません。

誰も私を少し助けることができますか?このような

答えて

1

何かが

SELECT USERID 
    , (COALESCE(SUM(CASE WHEN STATUS = 1 THEN 1 END), 0)/COUNT(*)) * 100 STATUS1_PER 
    , (COALESCE(SUM(CASE WHEN STATUS = 0 THEN 1 END), 0)/COUNT(*)) * 100 STATUS0_PER 
FROM 
MY_TABLE1 
GROUP BY USERID; 
+0

ありがとう、あなたのための役に立つかもしれません!それは私の問題を解決し、私に有用なものを教えてくれる。 –

関連する問題