今天学习汇总分析,一共六个知识点

一,汇总函数

函数就是一个功能,输入函数参数,它会向你返回值

  1. 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;

练习:

  1. 查询课程编号为‘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 性别;

运行顺序:

练习:

  1. 查询各科成绩最高分和最低分
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;

面试题练习:

  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汇总分析相关推荐

  1. 多个字段排序_SQL | 汇总分析、排序、运行顺序

    1.汇总分析 COUNT 计数(某列有多少行) SUM 列数据求和 AVG 列数据求平均 MAX 列数据最大值 MIN 列数据最小值 函数的功能:数据输入.自身的特性功能.数据输出 练习: ----- ...

  2. 查询去除空值_SQL数据处理(五):SQL多表查询

    一. 表的加法 加法(union).合并两张数据表course和course1/去除重复行重合 [select 课程号,课程名称 from course union select 课程号,课程名称 f ...

  3. sql 过滤空值_SQL 编程思想:一切皆关系!

    在计算机领域有许多伟大的设计理念和思想,例如: 在 Unix 中,一切皆文件. 在面向对象的编程语言中,一切皆对象. 关系数据库同样也有自己的设计思想:在 SQL 中,一切皆关系. 关系模型 关系模型 ...

  4. 查询去除空值_SQL多表查询

    表的加法 union 去除重复行 union all保留重复行 union的用法 union all的用法 表的联结 交叉联结也称笛卡尔积,是将表中的每一行都与另一张表的所有行合并在一起 内联结是将两 ...

  5. sql 分组求和_从零学会SQL:汇总分析 D3

    2020年3月24日 星期二 大纲: 汇总分析: 分组: 对分组结果指定条件: 用sql解决业务问题: 对查询结果排序: 如何看懂报错信息. 1 汇总分析 汇总函数 count:求某列的行数: 计算教 ...

  6. sql 某列数据全部为0则不显示该列_数据产品经理养成记(五):汇总分析

    学会了如何查找数据后,接下来就要对数据进行分析处理,比如求和.平均值.加总等等.这些对数据的加工处理通过汇总函数来实现.汇总函数在之前的两篇文章中都有涉及,这里采用概念--案例--总结的方式,集中介绍 ...

  7. sql 对groupby 后的数据limit_SQL(三)——汇总分析

    1. 汇总分析 函数的3个功能:①功能:②输入(参数):③输出(返回值) 查询课程编号为"0002"的总成绩: 查询选了课程的学生人数: 2.分组 sql分组:group by g ...

  8. sql datetime 排序_SQL的面试题

    让我们把SQL面试中可能会出现的题目类型梳理一下: 一.简单查询 -查询姓"猴"的学生名单 -查询姓名中最后一个字是"猴"的学生名单 -查询姓名中带" ...

  9. 奥威软件大数据bi_哪家BI软件能做Sql server的数据可视化分析?

    用Sql server的数据做可视化分析?用奥威BI系列的BI软件吧!他们就能做Sql server的数据可视化分析,并且操作起来十分简单.就拿Sql server数据源上传来说吧!仅需一键选中.拖拉 ...

最新文章

  1. CreateStructuringElementEx
  2. hasnMap的基本操作 源码(三)
  3. python strip() 函数探究
  4. URAL 1225 Flags
  5. linux内核的一些常识介绍
  6. 程序员如何接私单做SOHO一族
  7. 小汤学编程之JAVA基础day15——枚举、注解和Properties
  8. 破旧立新 “云”称霸
  9. CTO专访:坚守还是追新,开发者如何应对新技术暗潮
  10. 表格金额千分位设置及时间控件默认为空及取两位小数、获取当前日期的年份和月份
  11. jquery中的html代码、文本以及值
  12. JMS 开发步骤、持久化 topic 消息与非持久化 topic 消息
  13. 拍照区域遮盖层_真石漆与一般涂料所用外墙腻子层,有什么区别?
  14. NGUI中的UIGrid
  15. Windows XP 64位注册表删除问题
  16. matlab中如何取正数,excel表格数据取正值-怎么把excel表格的负数变成正数
  17. sql是什么mysql是什么意思_sql是什么意思
  18. 渗透测试必备google插件
  19. iOS8扩展插件开发配置
  20. 山东科技大学计算机篮球,球队资料:山东科技大学男子篮球队

热门文章

  1. Unity3D与Leap motion连接学习记录
  2. 64位系统matlab上安装libsvm
  3. 云炬随笔20211011
  4. 简述推荐系统中的矩阵分解
  5. asp.net session 介绍一三种Session存储方式
  6. FFmpeg--av_register_all函数分析
  7. Vulnhub靶机渗透之 RAVEN: 1
  8. 二分搜索之x平方根(保留整数)
  9. 修改mysql的max_allowed_packet值
  10. 存储器的保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记19