sql去除空值_SQL汇总分析
今天学习汇总分析,一共六个知识点
一,汇总函数
函数就是一个功能,输入函数参数,它会向你返回值
- count函数 求某列的行数
例:查询教师表中教师姓名的行数
select count(教师姓名) from teacher;
注意,这里计算的是红色区域的
如果select的是*号,则会计算所有的行,计算结果会变成4
2. sum函数 对某列数据求和 (只对数值类型的列进行计算)
查询成绩表中的成绩总和
select sum(成绩) from score;
3. avg函数 求某列数据的平均值 (只对数值类型的列进行计算)
查询成绩表的学生平均成绩
select avg(成绩) from score;
4. max函数 求某列数据的最大值, min函数 求某列数据的最小值
查询成绩表的学生最大成绩以及最小成绩
select max(成绩),min(成绩) from score;
tips: 学生表中学生姓名有重复,想要查询有多少个学生 这个时候就要用到distinct
select count(distinct姓名) from student;
练习:
- 查询课程编号为‘0002’的总成绩
select sum(成绩) from score
where 课程号 = '0002';
2. 查询选了课程的学生人数
/*这里用count计算有多少个学生号即可,但是一个学生可能会选择多个课程,
就会出现重复的学生号,所以要用到distinct 去除重复 */
select count(distinct 学号) as 学生人数 from score;
二,分组
在sql中使用 group by对数据按某个条件进行分组,经常与上面的汇总 条件进行搭配使用
比如 查询男生就多少人,女生有多少人 就对男生女生进行分组
select 性别, count(*) as 学生人数 from student group by 性别;
运行顺序:
练习:
- 查询各科成绩最高分和最低分
select max(成绩) as 最高分, min(成绩) as 最低分 from score
group by 课程号;
-- 锁定成绩表之后,找到最高分最低分,再根据课程号分组
2. 查询每门课程被选修的学生数
select 课程号,count(学生号) as 学生人数from score
group by 课程号;
-- 锁定成绩表之后,找到学号,再根据课程号分组
3.查询男生女生人数
select 性别, count(*) as 学生人数 from student group by 性别;
三,对分组结果指定条件
用having指定分组以后的条件
例如,男生女生组中哪一个组是一个人以上
select 性别, count(*) as 学生人数 from student
group by 性别 having count(*) > 1;
面试题练习:
- 查询平均成绩大于60份学生的学号和平均成绩
select 学号,avg(成绩) as 平均成绩 from score
group by 学号
having avg(成绩) > 60;
-- 从成绩标准找到学号以及成绩,将其按学号分类号后,应用函数 抽取大于60分的学生
2. 查询至少选修两门课程的学生学号
select 学号, count(课程号) as 选修课 from score
group by 学号
having count(课程号) >= 2;
-- 从成绩标准找到学号以及课程号,将其按学号分类号后,应用函数 抽取课程数量大于2的学生
3. 查询同名同姓学生名单并统计同名人数
select 姓名, count(*) as 人数 from student
group by 姓名
having count(*) >= 2;
/* 解题思路首先是 确定表student,然后根据题目所说的统计同名人数,那么就是按照姓名分组,
其次统计运用的就是count函数,同名的人数一定是两个及以上,
所以最后 用having提取计数两个以上的数据 */
四, 用SQL解决业务问题
要解决问题,先把要求翻译成大白话,再想解决问题的思路是什么,最后写sql语句
例如:如何计算各科平均成绩
先翻译成大白话,1. 各科成绩就是每门成绩,那么就是按照科目分组 group by 课程号
2. 平均成绩,就是需要函数avg
然后将查询语句的各个关键字写出来
select [查询结果] from [哪张表]
where [查询条件]
group by [分组]
having [对分组结果指定条件]
再与之对应
那么对应下来的结果就是:
表:score
查询条件:没有
分组 :课程号
对分组指定条件:没有
查询结果:课程号,avg(成绩)
select 课程,avg(成绩) from score
group by 课程号;
练习题:计算每门课程的平均成绩并且平均成绩大于80分
解题思路:
表:score
查询条件:没有
分组 :课程号
对分组指定条件:平均成绩大于80分
查询结果:课程号,avg(成绩)
select 课程号,avg(成绩) from score
group by 课程号
having avg(成绩) >= 80;
五,对查询结果排序
order by是对查询结果排序
升序 ASC
降序 DESC
这个是放在最后的,所以在之前的公式后面再加一个order by 具体如下
select [查询结果]
from [哪张表]
where [查询条件]
group by [分组]
having [对分组结果指定条件]
order by[对查询结果进行排序]
练习题1:计算每门课程的平均成绩并且平均成绩大于80分 平均成绩相同时结果按降序排列
首先按照公式一步一步分析
表:score
查询条件:没有
分组 :课程号
对分组指定条件:平均成绩大于80分
结果排序 :降序 desc
select 课程号,avg(成绩) as 平均成绩 from score
group by 课程号
having avg(成绩) >= 80
order by 平均成绩 desc;;
运行顺序:
指定多个排序列名
例子2:要求升级升序,课程号降序
select * from score
order by 成绩 asc, 课程号 desc;
空值的排序 可用于查看空值
如查找教师表的空值
select * from teacher order by 教师姓名;
如图所示,空值会在最前面显示
取出指定行 limit
去几行就写limit几
例如:查询成绩表中前两行的信息
select * from score
limit 2;
运行顺序:
练习题2:查询不及格的课程并按课程号从大到小排列
select 课程号 from score
where 成绩 < 60
order by 课程号 desc;
六,如何看懂报错信息
常见错误:在where中使用聚合函数
正确写法:
select 性别, count(*) as 学生人数 from student
group by 性别 having count(*) > 1;
错误写法:
select 性别, count(*) as 学生人数
from student
where count(*) > 1
group by 性别 ;
如图所示,红色部分Err 表示报错,黄色部分显示的错误的信息,可根据英文知道发生了什么错误,加以改正
tips:数值类型与字符串类型的排序顺序以及算最大值时 是不一样的,所以一定要注意确认修改数据类型。
sql去除空值_SQL汇总分析相关推荐
- 多个字段排序_SQL | 汇总分析、排序、运行顺序
1.汇总分析 COUNT 计数(某列有多少行) SUM 列数据求和 AVG 列数据求平均 MAX 列数据最大值 MIN 列数据最小值 函数的功能:数据输入.自身的特性功能.数据输出 练习: ----- ...
- 查询去除空值_SQL数据处理(五):SQL多表查询
一. 表的加法 加法(union).合并两张数据表course和course1/去除重复行重合 [select 课程号,课程名称 from course union select 课程号,课程名称 f ...
- sql 过滤空值_SQL 编程思想:一切皆关系!
在计算机领域有许多伟大的设计理念和思想,例如: 在 Unix 中,一切皆文件. 在面向对象的编程语言中,一切皆对象. 关系数据库同样也有自己的设计思想:在 SQL 中,一切皆关系. 关系模型 关系模型 ...
- 查询去除空值_SQL多表查询
表的加法 union 去除重复行 union all保留重复行 union的用法 union all的用法 表的联结 交叉联结也称笛卡尔积,是将表中的每一行都与另一张表的所有行合并在一起 内联结是将两 ...
- sql 分组求和_从零学会SQL:汇总分析 D3
2020年3月24日 星期二 大纲: 汇总分析: 分组: 对分组结果指定条件: 用sql解决业务问题: 对查询结果排序: 如何看懂报错信息. 1 汇总分析 汇总函数 count:求某列的行数: 计算教 ...
- sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析
学会了如何查找数据后,接下来就要对数据进行分析处理,比如求和.平均值.加总等等.这些对数据的加工处理通过汇总函数来实现.汇总函数在之前的两篇文章中都有涉及,这里采用概念--案例--总结的方式,集中介绍 ...
- sql 对groupby 后的数据limit_SQL(三)——汇总分析
1. 汇总分析 函数的3个功能:①功能:②输入(参数):③输出(返回值) 查询课程编号为"0002"的总成绩: 查询选了课程的学生人数: 2.分组 sql分组:group by g ...
- sql datetime 排序_SQL的面试题
让我们把SQL面试中可能会出现的题目类型梳理一下: 一.简单查询 -查询姓"猴"的学生名单 -查询姓名中最后一个字是"猴"的学生名单 -查询姓名中带" ...
- 奥威软件大数据bi_哪家BI软件能做Sql server的数据可视化分析?
用Sql server的数据做可视化分析?用奥威BI系列的BI软件吧!他们就能做Sql server的数据可视化分析,并且操作起来十分简单.就拿Sql server数据源上传来说吧!仅需一键选中.拖拉 ...
最新文章
- CreateStructuringElementEx
- hasnMap的基本操作 源码(三)
- python strip() 函数探究
- URAL 1225 Flags
- linux内核的一些常识介绍
- 程序员如何接私单做SOHO一族
- 小汤学编程之JAVA基础day15——枚举、注解和Properties
- 破旧立新 “云”称霸
- CTO专访:坚守还是追新,开发者如何应对新技术暗潮
- 表格金额千分位设置及时间控件默认为空及取两位小数、获取当前日期的年份和月份
- jquery中的html代码、文本以及值
- JMS 开发步骤、持久化 topic 消息与非持久化 topic 消息
- 拍照区域遮盖层_真石漆与一般涂料所用外墙腻子层,有什么区别?
- NGUI中的UIGrid
- Windows XP 64位注册表删除问题
- matlab中如何取正数,excel表格数据取正值-怎么把excel表格的负数变成正数
- sql是什么mysql是什么意思_sql是什么意思
- 渗透测试必备google插件
- iOS8扩展插件开发配置
- 山东科技大学计算机篮球,球队资料:山东科技大学男子篮球队