2017-12-31 56 views
3

問題をご覧ください。あなたはそれが興味深いことがわかります。 私はテーブルmemberを持っていますが、私はカラムがresultです。この結果の列では、3つの値が可能であり、一度に1つの値しか使用できません。可能な値はW,LおよびVです。こちらでは不要なので、Vは忘れてください。雄弁でパーセンテージを計算するには?

私は5行、3行にはWがあり、1行にはLがあり、最後はVです。

ここでは3Wと1Lのうち4つ(W + Lをまとめて)です。したがって、Wの割合は75%です。どうすればmysqlを使って計算できますか?それが可能なら雄弁を使う方が良いでしょう。

現在、私はPHPのループ 3を実行していて、私は割合を計算しています結果列の値に基づいてすべての行 2.取得このソリューション 1を使用しています。正常に動作します。しかし、私はそれが見つからない理由は良い解決策があると思う:)

あなたはこの問題のために何かを持っています。 ありがとうございます。

答えて

3

、次の操作を行います。

$wl = Member::whereIn('result', ['W', 'L'])->count(); 
$total = Member::count(); 
$percent = $wl/$total * 100; 

これは、はるかに効率的、実際にDBからレコードを取得するよりもなります。

+2

ちょうど完璧よりも。しかし、私はそれを正しく計算するためにもう少し編集する必要がありましたが、あなたは上司です:)。ありがとうございました 編集しました '$ wl = Member :: where( 'user_id'、1) - > whereIn( 'result'、['W']) - > count();$ total = Member :: where( 'user_id'、1) - >ここで( 'result'、 '!='、 'V') - > count(); $パーセント= $ wl/$合計* 100; ' – sadek

3

あなたの質問は少しあいまいですが、私が見るものからCOUNT機能は、ここでは十分なはずです。もちろん

SELECT 
    100.0 * COUNT(W)/COUNT(*) AS w_pct, 
    100.0 * COUNT(L)/COUNT(*) AS l_pct 
FROM yourTable; 

、あなたはすでに我々が含まれるように上記のクエリを変更することができます集約を行っている場合GROUP BY。あなたは純粋な雄弁ソリューションをしたい場合は