Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计算与查询匹配的特定行数_Mysql_Sql - Fatal编程技术网

Mysql 计算与查询匹配的特定行数

Mysql 计算与查询匹配的特定行数,mysql,sql,Mysql,Sql,我检索了一个名为results的表,并显示如下 sub1到sub2列表示科目名称,行中的值由学生打分 当从数据库中检索信息时,我还需要计算一个学生得分低于40分的科目数。例如,Tom在2个科目中得分低于40分,结果如下所示 请帮助编写一个查询以显示最后一列,这样做会容易得多,但即使不更改其结构,您也可以通过一些case语句获得此结果: SELECT id, students, sub1, sub2, sub3, sub4, sub5, sub6, CASE

我检索了一个名为results的表,并显示如下


sub1到sub2列表示科目名称,行中的值由学生打分

当从数据库中检索信息时,我还需要计算一个学生得分低于40分的科目数。例如,Tom在2个科目中得分低于40分,结果如下所示


请帮助编写一个查询以显示最后一列,这样做会容易得多,但即使不更改其结构,您也可以通过一些
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
选择id,学生,
sub1,sub2,sub3,sub4,sub5,sub6,
当sub1<40时,则为1,否则为0结束+
当sub2<40时,则为1,否则为0结束+
当sub3<40时,则为1,否则为0结束+
当sub4<40时,则1否则0结束+
当sub5<40时,则为1,否则为0结束+
当sub6<40时,则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;
选择id、学生、sub1、sub2、sub3、sub4、sub5、sub6、,
((sub1<40)+(sub2<40)+(sub3<40)+(sub4<40)+(sub5<40)+(sub6<40)
)作为失败的
来自表t;

向我们展示您目前拥有的功能。