sql中的CASE WHEN的入门使用
目录
sql中的CASE WHEN的入门使用
CASE WHEN条件表达式函数:类似JAVA中的IF ELSE语句。
格式:
CASE WHEN condition THEN result
[WHEN...THEN...]
ELSE result
END
案例一、有分数score,score<60返回不及格,score>=60返回及格,score>=80返回优秀
- 1.建表语句
CREATE TABLE `stu` (
`STU_CODE` varchar(16) DEFAULT NULL,
`STU_NAME` varchar(255) DEFAULT NULL,
`SEX` tinyint DEFAULT NULL,
`STU_SCORE` int DEFAULT NULL
)
- 2.数据
INSERT INTO `stu` VALUES ('XM', '小明', '0', '88');
INSERT INTO `stu` VALUES ('XL', '小磊', '0', '55');
INSERT INTO `stu` VALUES ('XF', '小峰', '0', '45');
INSERT INTO `stu` VALUES ('XH', '小红', '1', '66');
INSERT INTO `stu` VALUES ('XN', '晓妮', '1', '77');
INSERT INTO `stu` VALUES ('XY', '小伊', '1', '99');
INSERT INTO `stu` VALUES ('XG', '小光', '0', null);
- 3.sql数据
SELECT
STU_NAME,
(
CASE
WHEN STU_SCORE < 60 THEN
'不及格'
WHEN STU_SCORE >= 60
AND STU_SCORE < 80 THEN
'及格'
WHEN STU_SCORE > 80 THEN
'优秀'
WHEN STU_SCORE IS NULL THEN
'缺席考试'
ELSE
'异常'
END
) AS REMARK
FROM
stu;
案例二、现老师要统计班中,有多少男同学,多少女同学,并统计男同学中有几人及格,女同学中有几人及格,要求用一个SQL输出结果。
使用的是上面的语句,直接上sql
SELECT
sum(CASE WHEN SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
SUM(CASE WHEN SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
SUM(
CASE
WHEN STU_SCORE > 60
AND SEX = 0 THEN
1
ELSE
0
END
) AS MALE_PASS,
SUM(
CASE
WHEN STU_SCORE > 60
AND SEX = 1 THEN
1
ELSE
0
END
) AS FEMALE_PASS
FROM
stu;
案例三现要求统计各个城市,总共使用了多少水耗、电耗、热耗,使用一条SQL语句输出结果
- 1.建表语句
CREATE TABLE `e` (
`E_CODE` varchar(16) DEFAULT NULL,
`E_VALUE` double(16,3) DEFAULT NULL,
`E_TYPE` tinyint DEFAULT NULL
)
- 2.插入的数据
INSERT INTO `e` VALUES ('北京', '28.500', '0');
INSERT INTO `e` VALUES ('北京', '23.510', '1');
INSERT INTO `e` VALUES ('北京', '28.120', '2');
INSERT INTO `e` VALUES ('北京', '12.300', '0');
INSERT INTO `e` VALUES ('北京', '15.460', '1');
INSERT INTO `e` VALUES ('上海', '18.880', '0');
INSERT INTO `e` VALUES ('上海', '16.660', '1');
INSERT INTO `e` VALUES ('上海', '19.990', '0');
INSERT INTO `e` VALUES ('上海', '10.050', '0');
- 3.废话不多说,直接上sql
SELECT
*
FROM
e;
SELECT
e_code,
SUM(
CASE
WHEN e_type = 0 THEN
E_value
ELSE
0
END
) AS shui,
SUM(
CASE
WHEN e_type = 1 THEN
E_value
ELSE
0
END
) AS dian,
SUM(
CASE
WHEN e_type = 2 THEN
E_value
ELSE
0
END
) AS re
FROM
e
GROUP BY
e_code;
第二种语法
select case sex when '男' then 1
when '女' then 0 end as sex from stu;
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/15073274.html

浙公网安备 33010602011771号