计算特定行以匹配查询

时间:2014-05-24 09:54:21

标签: mysql sql

我有一个名为结果的表格已检索并显示如下

Working table


列sub1到sub2代表主题名称,行包含学生评分的值

虽然从数据库检索信息,但我还需要计算一个学生得分低于40的主题数,例如,汤姆在2个科目中得分低于40,结果如下所示

Working table


请帮助您编写查询以显示最后一列

2 个答案:

答案 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;