我一直试图在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
然后显示所有超过75%的卷
roll | att
abc | 80
xyz | 100
我在php中获取值后正在进行此计算。但现在我需要在查询中完成此操作。
我是单独做的select * from attendance where status="0" and roll="abc"
然后再次为status="1"
有人可以解释一下吗? 我该如何处理查询?
答案 0 :(得分:2)
您可以使用SUM()
来获取与条件匹配的行的总数,因为当条件为真时,条件的计算结果为1
。
SELECT roll, ROUND(SUM(status = 1)/COUNT(*) * 100) AS att
FROM attendance
GROUP BY roll
HAVING att > 75