mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值


本节的内容:


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_02


一、汇总分析

(1)常用的函数有:

count函数:求某列的行数。

Sum函数:对某列数据求和,但只对数据类型的列计算。

avg函数:求某列的平均值,但只对数据类型的列计算。

Max函数:求某列数据的最大值

min函数:求某列数据的最小值

(2)常用函数的实际运用:

a.查询学生表中学生的总人数,则可用count函数求出。


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_03


用count函数后:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_04


注意:若计算的是列名,则会计算将空值排除在外的结果,如果用count(*)表示计算该列的所有行数,包括空值行。

b.用sum函数计算成绩表中学生的总成绩。


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_05


用sum函数后:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_06


c.计算成绩表中学生的平均成绩。用avg计算如下:


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_05


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_08


d.求成绩表中学生成绩的最大值,最小值。则用max最大值函数和min最小值函数。


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_05


结果如下:


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_10


e.若计算之前,不想计算重复值,则可以在汇总函数前加入distinct函数,去除重复值。


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_11


(3)注意SQL书写规则:


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_12


练习:汇总分析(常见面试题)

a. 查询课程号为“0002”的总成绩。


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_13


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_14


b.查询选了课程的学生人数。


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_15


二、分组

分组函数:group by

练习:分组(常见面试题)

a. 查询各科成绩最高和最低的分


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_16


b. 查询每门课程被选修的学生数


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_17


c. 查询男生、女生人数。


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_18


运行结果:


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_19


三、对分组结果指定条件


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_20


练习:分组结果的条件(常见面试题)

a. 查询平均成绩大于60分学生的学号和平均成绩


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_21


b. 查询至少选修两门课程的学生学号。

题目意思翻译成大白话就是:

第一步:需要先计算出每个学生选修的课程数据,需要按学号分组

第二步:至少选修两门课程,也就是每个学生选修课程数量>=2,对分组结果指定条件。


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_22


c.查询同名同姓学生名单并统计同名人数。

题目意思翻译成大白话就是:

第一步:查找出姓名相同的学生有谁,每个姓名相同学生的人数。

查询结果:姓名,人数

条件:怎么算姓名相同呢?按姓名分组后人数大于等于2,因为同名的人数大于等于2.


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_23


四、用SQL解决业务问题。

1.翻译成大白话,2写出分析思路;3.写出对应的SQL子句。如:三、中的c.

五、对查询结果进行排序:

a)order by: asc升序,从小到大;desc降序,从大到小。

b).SQL语句的运行顺序:

先运行2-5的子句,再运行1的子句,最后运行6的子句。


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_24


c).指定多个排序列名:


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_25


注:当多个列名进行排序时,排序顺序为从左到右,当第一个列名存在相同的值时,按第二个值进行排序。

d).空值(null)的排序:


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_26


e).当数据库中有很多数据时,我们只想提取其中部分数据时,可以用limit子句,从查询结果中查询指定行的数据。

例如:从查询结果中取出前两行数据。


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_27


SQL运行顺序:2-3-4-5-1-6-7,先运行红框子句,select子句,最后运行黄框子句。


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_28


练习:理解sql的运行顺序(常见面试题):

a. 查询成绩小于90分的课程并按课程号从大到小排序


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_29


b. 查询每门课程的平均成绩,结果按平均成绩升序排序。平均成绩相同时,按课程号降序排列。


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_30


六、如何看懂报错信息。

常见错误:在having子句 中使用了select里的别名,如:

mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_31


常见错误:在where中使用了聚合函数


mysql 三个数取最大值 sql求三个数中的最大数_mysql 三个数取最大值_32


常见问题:字符串类型的数字的排序规则与数字类型的排序规则不一样。

练习题:sqlzoo


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_33


练习1:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_34


练习2:


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_35


练习3:


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_36


练习4:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_37


练习5:


mysql 三个数取最大值 sql求三个数中的最大数_sql 某列数据全部为0则不显示该列_38


练习6:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_39


练习7:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_40


练习8*:


mysql 三个数取最大值 sql求三个数中的最大数_sql去除空值_41


练习9:


mysql 三个数取最大值 sql求三个数中的最大数_sql更改某列数据_42


练习10:


mysql 三个数取最大值 sql求三个数中的最大数_sql 最大值_43


封面图片来源于网络。