简单HQL练习-查询表中及格人数与不及格人数

在一条SQL中使用条件进行判断可以使用where子句,但是对两个相反的条件进行选择的话,就必须使用case when子句。

比如统计表中及格人数与不及格人数,同时限定一条SQL语句的话,就可以这样写:

select sum(case when score<60 then 1 else 0 end) as 不合格人数,
       sum(case when score>=60 then 1 else 0 end) as  合格人数 
from user ;

case when子句有两种写法:
第一种

case 列名
when   条件值1   then  选项1
when   条件值2   then  选项2.......
else   默认值    end

例子:
select 
case score 
when 60 then 1 
when 70 then 2 
when 80 then 3
when 90 then 4
else 0 end
from user ;

第二种

case 
when   列名 = 条件值1   then  选项1
when   列名 = 条件值2   then  选项2.......
else   默认值    end

例子:
select 
case score 
when 60<=score and score<70 then 1 
when 70<=score and score<80 then 2 
when 80<=score and score<90 then 3
when 90<=score and score<=100 then 4
else 0 end
from user ;

用来针对性分组或者分等级还是挺好用的。

你可能感兴趣的:(#,---手撕SQL,sql)