做计算在SQL查询

问题描述:

我坚持努力做计算的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"

有人能解释一下吗? 我该如何处理查询?

您可以使用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