我有一个名为结果的表格已检索并显示如下
列sub1到sub2代表主题名称,行包含学生评分的值
虽然从数据库检索信息,但我还需要计算一个学生得分低于40的主题数,例如,汤姆在2个科目中得分低于40,结果如下所示
请帮助您编写查询以显示最后一列
答案 0 :(得分:1)
Normalizing your table会让这更容易,但即使不更改其结构,您也可以使用case
个语句获得此结果:
SELECT id, students,
sub1, sub2, sub3, sub4, sub5, sub6,
CASE WHEN sub1 < 40 THEN 1 ELSE 0 END +
CASE WHEN sub2 < 40 THEN 1 ELSE 0 END +
CASE WHEN sub3 < 40 THEN 1 ELSE 0 END +
CASE WHEN sub4 < 40 THEN 1 ELSE 0 END +
CASE WHEN sub5 < 40 THEN 1 ELSE 0 END +
CASE WHEN sub6 < 40 THEN 1 ELSE 0 END AS "Failed IN"
FROM my_table
答案 1 :(得分:0)
MySQL具有将布尔比较视为整数的便捷能力。这是表达逻辑的一种非常简单的方法:
select id, students, sub1, sub2, sub3, sub4, sub5, sub6,
((sub1 < 40) + (sub2 < 40) + (sub3 < 40) + (sub4 < 40) + (sub5 < 40) + (sub6 < 40)
) as FailedIn
from table t;