case-end:计算一组条件表达式,并返回一个符合条件的结果
1.简单的case表达式
语法:
CASE 列名
WHEN 列名的值1 THEN 结果1
WHEN 列名的值2 THEN 结果2
......
[ELSE 结果] //可省
END [as 别名]
例子:
SELECT id,address,age,name,sex ,CASE sexWHEN 0 THEN '男'
WHEN 1 THEN '女'
END as 性别 from student
2.case搜索函数
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
......
[ELSE 结果] //可省
END [as 别名]
例子:(结果和例1一样)
SELECT id,address,age,name,sex ,CASE
WHEN sex=0 THEN '男'
WHEN sex=1 THEN '女'
END as 性别 from student
3.面试题:用一条SQL语句计算出男女比例
select
sum(case when sex=0 then 1 else 0 end)/count(*) as 男生比例,
sum(case when sex=1 then 1 else 0 end)/count(*) as 女生比例
from student
注:如果sum换成count的话那么不管条件怎样,计算的都是总条数
4.面试题:用一条SQL语句计算出商品剩余数量
商品总数表
出货表
SQL语句:
SELECT
1000-sum(case when name='A' then chuhuo else 0 end) A剩余量,
500-sum(case when name='B' then chuhuo else 0 end) B剩余量
from chuhuo
结果:
注:这里用了一种笨办法,直接用的商品总数去减,用两张表不知道怎么用