做计算在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'返回'1'计数具有状态= 0和状态= 1,而不是总和 –
这些行中的行。当你总结他们时,那些行就会被计算在内。 – Barmar