sql - case语句和if函数
2022/6/12 6:20:26
本文主要是介绍sql - case语句和if函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
为什么会有本文?
问题:需要从成绩表里面获取成绩单(排名,单科成绩,总分)
处理:按名称分组,SUM聚合运算获取总分,单科成绩需要给定条件来筛选,包含分组语句筛选(case语句或if函数)的字段必须为分组字段或聚合字段,所以单科成绩还需要使用聚合函数(如SUM)包裹一层;
优点:通过,分组+聚合+筛选,实现,列形式的数据转化为行形式的数据;方便将源数据结构转化为自己需要的数据结构,从而进行其它操作;
步骤:
- 执行建表语句
- 执行插入语句
- 执行查询语句
CREATE TABLE `grade` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `course` varchar(255) DEFAULT NULL, `score` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO grade VALUES (null, "王五", "语文", 100), (null, "王五", "数学", 90), (null, "王五", "英语", 80), (null, "李四", "语文", 70), (null, "李四", "数学", 60), (null, "李四", "英语", 50);
-- 方式1:使用case语句 SELECT name, SUM(CASE WHEN course='语文' THEN score ELSE 0 END) AS 语文, SUM(CASE WHEN course='数学' THEN score ELSE 0 END) AS 数学, SUM(CASE WHEN course='英语' THEN score ELSE 0 END) AS 英语, SUM(score) AS 总分 FROM grade GROUP BY name ORDER BY SUM(score) DESC; -- 方式2:使用if函数实现 SELECT name, SUM(IF(course='语文', score, 0)) 语文, SUM(IF(course='数学', score, 0)) 数学, SUM(IF(course='英语', score, 0)) 英语, SUM(score) 总分 FROM grade GROUP BY name ORDER BY SUM(score) DESC;
这篇关于sql - case语句和if函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding