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 回答