2016-08-20 206 views
0

我堅持努力做計算的SQL查詢。 我有表出席,看起來像這樣:做計算在SQL查詢

roll | class_id | status 
abc |  1 | 0 
qwe |  1 | 0 
zxc |  2 | 1 
xcv |  1 | 1 
mnb |  2 | 1 
poi |  1 | 1 
lkj |  2 | 0 

我要在這裏適用的公式:

att= (count where roll="abc" status = "1"/count where roll="abc" status = "1" + count where roll="abc" status = "0") * 100 

再展具有ATT超過75%的所有卷

roll | att 
abc | 80 
xyz | 100 

在php中獲取值之後,我正在做這個計算。但現在我需要在查詢中完成這個工作。我獨自做它通過

select * from attendance where status="0" and roll="abc" 

,然後再次這樣做了status="1"

有人能解釋一下嗎? 我該如何處理查詢?

回答

2

您可以使用SUM()獲取與條件匹配的行的總數,因爲當條件爲真時,條件的計算結果爲1

SELECT roll, ROUND(SUM(status = 1)/COUNT(*) * 100) AS att 
FROM attendance 
GROUP BY roll 
HAVING att > 75 
+0

我想你不明白我的問題。 –

+0

我有0,'狀態= 0'返回'1'計數具有狀態= 0和狀態= 1,而不是總和 –

+0

這些行中的行。當你總結他們時,那些行就會被計算在內。 – Barmar