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