[英]How to calculate the percentage in eloquent?
請看看問題。 您會發現它很有趣。 我有一個表member
,其中有一個列result
。 在此結果列中,可能有三個值,一次只能使用一個值。 可能的值W
, L
和V
忘記V
因為這里不需要。
假設我有5行,在3行中有W
,在1行中有L
,最后一個是V
所以這里3W和1L占4(W + L在一起)。 因此W的百分比為75%。 我該如何使用mysql計算它,如果可以使用雄辯,那會更好。
當前,我正在使用此解決方案1.獲取所有行2.運行php循環3.然后根據結果列的值計算百分比。 工作正常。 但我認為,如果有更好的解決方案,為什么不找到它:)
希望您能解決這個問題。 提前致謝。
您的問題有點含糊,但是從我看來, COUNT
函數在這里應該足夠了:
SELECT
100.0 * COUNT(W) / COUNT(*) AS w_pct,
100.0 * COUNT(L) / COUNT(*) AS l_pct
FROM yourTable;
當然,如果您已經在進行聚合,則可以修改上面的查詢以包括GROUP BY
。
如果您想要一個純粹的口才解決方案,請執行以下操作:
$wl = Member::whereIn('result', ['W', 'L'])->count();
$total = Member::count();
$percent = $wl / $total * 100;
這比實際從數據庫檢索任何記錄要有效得多。
如果$ total = 0怎么辦? 在這種情況下,除以零將產生錯誤。 請確保同樣進行檢查:
if ($total != 0) {
$percent = $wl / $total * 100;
} else {
$percent = 0;
}
希望以后對您有所幫助。
在Laravel Join查詢中,具有計數百分比:
select('marketplace.store_name', 'users.name' , **DB::raw('round((count(products.user_id)/(select count(*) from products)*100),2) as percentage')** , DB::raw('round(avg(products.user_id),2) as avg') );
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.