2012-08-29 31 views
3

我希望做我的SELECT查詢和列的一些基本的數學..使用別名在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行的數學......

+0

你的問題還不清楚。你想要爲「S/R」列計算什麼? – hims056

+0

對不起..輸入一個急件。我想根據「Firsts」和「Total」的值來計算一個新的「S/R」列。此刻我要麼NULL或0 –

回答

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 

Just see SQLFiddle example here.

+0

真棒..謝謝!我應該以這種方式接近它......爲xtra提示也歡呼! –

相關問題