簡單HQL練習 查詢表中及格人數與不及格人數

2021-10-09 08:05:54 字數 1210 閱讀 3908

在一條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

60then

1when

70then

2when

80then

3when

90then

4else

0end

from

user

;

第二種

case

when 列名 = 條件值1

then 選項1

when 列名 = 條件值2

then 選項2...

....

else 預設值 end

例子:select

case score

when

60<=score and score<

70then

1when

70<=score and score<

80then

2when

80<=score and score<

90then

3when

90<=score and score<=

100then

4else

0end

from

user

;

用來針對性分組或者分等級還是挺好用的。

一張表中, 查詢學生及格和不及格人數

表結構為 class name score 班級 姓名 分數 查詢每個班級中,及格和不及格學生的人數 select class sum case when score 60 then 1 else 0 end as gt60,sum case when score 60 then 0 else 1 ...

查詢班級中及格,一般,優秀的人數的sql語句

select a.classname,a.coursename,sum 不及格 as 不及格,sum 差 as 差,sum 中等 as 中等,sum 好 as 好 sum 不及格 sum 差 sum 中等 sum 好 as 班級總人數 from select studentid,classname,...

SQL簡單查詢練習彙總(單個表)

use study go 0 查詢雇員姓名的最後三個字母 select ename,substring ename,len ename 2,len ename from emp 0.5 查詢10部門雇員進入公司的星期數 select emp.ename,datediff week,hiredate,...