3

SELECTクエリと列で基本的な数学を実行しようとしています..

SELECT Rider, 
COUNT(if(Result = 1, Result, NULL)) AS "Firsts", 
COUNT(if(Result = 2, Result, NULL)) AS "Seconds", 
COUNT(if(Result = 3, Result, NULL)) AS "Thirds", 
COUNT(if(Result = " ", Result, NULL)) AS "NP",
COUNT(*) AS "Total",
"Firsts"/"Total"*100 AS "S/R"
FROM meeting_master
WHERE RaceDayDate>="2012-01-01"
GROUP BY meeting_master.Rider
ORDER BY Firsts DESC
LIMIT 100

私の問題 (および MySQL の知識の欠如) は、S/R列に 7 行目の数学を計算させることです...

4

1 に答える 1

3

次のようにエイリアスを使用しないでください。SELECT

"Firsts"/"Total"*100 AS "S/R"

代わりに、次のように直接計算します。

COUNT(if(Result = 1, Result, NULL))/COUNT(*) * 100 AS "S/R"

したがって、クエリは次のようになります。

SELECT Rider, 
COUNT(if(Result = 1, Result, NULL)) AS "Firsts", 
COUNT(if(Result = 2, Result, NULL)) AS "Seconds", 
COUNT(if(Result = 3, Result, NULL)) AS "Thirds", 
COUNT(if(Result = " ", Result, NULL)) AS "NP",
COUNT(*) AS "Total",
COUNT(if(Result = 1, Result, NULL))/COUNT(*) * 100 AS "S/R"
FROM meeting_master
WHERE RaceDayDate>="2012-01-01"
GROUP BY meeting_master.Rider
ORDER BY Firsts DESC
LIMIT 100

ここで SQLFiddle の例を参照してください。

于 2012-08-29T06:15:48.550 に答える