字符串转数字 sql_SQL汇总分析—知识点梳理(三)

a8f6ef1446af49857818fbb4f447b8cc.png

SQL汇总分析学习大纲

e38a2c7998525006a0371e098de9f8ae.png

一、汇总分析

函数的功能

061cf5049e4e08e78e24c8a27257b503.png

五个常用的汇总函数

7dc6b9a63c4d94e3ab1704184a1c1aa1.png

函数的三个特点

1. 具备某个功能,方便使用函数的人实现特定的功能

2. 函数有输入端,用于接收使用它的人输入的数据,输入的数据叫函数的参数

3. 函数有输出端,用于返回处理完的数据,输出的数据叫返回值

b6deb301d8bdf2e2ff49ccdbf640a374.png

count函数

求某列的行数。可以输入某列数据即可返回该列的行数。count函数可以对任何类型的数据进行计算

a562345a930ba60979e93cd23d712491.png
      • count函数输入值是列

如:【select count(教师姓名) from teacher;】即可返回结果count(教师姓名)这一列有3行(count函数如果输入的是列名,那么返回的结果是非null值的行数。同理,如果输入的是列名,其他汇总函数在计算时也会提前将null值排除在外再计算)

4ebc3613733e6962dc3df0f1078a24db.png
      • count函数输入值是*

如:【select count(*) from teacher;】星号(*)代表全部行,包括空值,因此输出的结果count(*)有4行

ea2fb60e51420a904af5c1b34ac05934.png
      • count函数计算非重复值

如:【select count(distinct 姓名) from student;】其他汇总函数也适用,即在列名前加上distinct即可计算非重复值

3506c54556e6356dd2584252cd8b0007.png

sum函数

如:【select sum(成绩) from score;】sum函数只能对数值类型的列计算,否则会报错

64d1270b6cdff677d9caa1ccfb180a96.png

avg函数

如:【select avg(成绩) from score;】avg函数只能对数值类型的列计算,否则会报错

55af125a4936b3e5105732d24468e357.png

max函数和min函数

如:【select max(成绩),min(成绩) from score;】max和min函数可以对任何类型的数据进行计算

e80e017c10671c08575807e5ec59be82.png

二、分组

在SQL中运用group by子句按某个条件对数据进行分组

a813bfc04078f9827d532b4ee8af2493.png

分组函数经常与汇总函数一起使用,运用了以下这种数据分析的通用模板分析方法,由三部分组成:

1. 对数据按某种规则进行分组。如按性别将学生分为男女两组

2. 应用函数。在前一步分组的数据上进行操作,如求平均值等,因为是分组计算,因此每个组都会有对应的计算结果

3. 组合结果。将第二步每一组计算的结果总结到同一个表中

f444d951260c908425f04ccf4d673c8a.png

【select 性别,count(*) from student group by 性别;】

fcdf01782575e6d2d5fee083e68e21cf.png

SQL运行顺序:SQL子句的书写顺序与SQL的运行顺序不同。

0b240ff150c7b3192ee92bc894fc2f3f.png
      • 1. from子句指定从哪张表中查找数据

7243b713f03cb6a5b64472e74d794fde.png
      • 2. where子句查询符合条件的行

993b091db2d00c86b201728cc7a45c6b.png
      • 3. group by子句对第二步查询出的数据进行分组

65e064da32f48ca541a6aea60444cc11.png
      • 4. select子句对分组后的每个组应用函数并组合结果,同时筛选出指定的列

071df374f0adae030a9f4c2d686c9d39.png

SQL运行顺序总结:第一步先按书写顺序运行蓝框里的子句;第二步在运行select子句。

d4ce16ec148d3aacf052bcd19fde5266.png

三、对分组结果指定条件

having函数

where子句只能指定行的条件,而having子句可以指定分组后的条件

fc24f5cb3ff9b525270900ff3ba16e64.png

5642d2b3e9741d9c83154fc7e9eedd76.png

SQL运行顺序

e3ca34f8c7ea4c0dd6533be17db0343a.png

四、用SQL解决业务问题

8df9ebda7bbb6ebc61c4f0c57bca6842.png

案例1

78d89816f842861d05cf7916f28c2484.png

ccea324b51e7f1e22d4489b9ea947fa1.png

a6c61873ea023eec6e282916546f1004.png

3a4379ac894d20e0e927c809fc8196c0.png

d3ea2cc939622a833ed3d4fa42b4febe.png

案例2

80ee739405f28521b22ca19ba07565ad.png

d661c1fda61fecda10d4a9675da230d5.png

b36beecc32bc6c78852ee016fd8822da.png

总结

0a8958a5dfa79cb1c0e1b20c48495b59.png

五、对查询结果排序

order by函数

对查询结果排序

e715c45ae82e367575e1a36cc6920479.png

desc——降序,从大到小

asc——升序,从小到大

bfbcd727937e4e0be40c4be166c89181.png
      • 指定多个排序列名

按order by从左到右的列名进行排序。先按第一个列名进行排序,如果该列存在相同的值,这些相同的值再按第二个列名进行排序,以此类推

facb2bfa597f24409d4d269ce8655dd9.png
      • 空值null的排序

使用含有空值null的列进行排序时,空值null会在查询结果的开头显示。当数据量很大时,可以按照这种方法查看空值情况。

f2f638179275fa9eebfbfcd5ea0c2829.png

SQL运行顺序

84e701e50834e8b4cac5b379ff3d6e97.png

limit函数

如果查询结果数据量很大,而只想返回部分结果,而不需要全部显示,可以使用limit函数。limit函数的作用就是从查询结果取出指定行。

44f46db625bac56d9579af1d1b92ee57.png

SQL运行结果

72fd78e97cfa36e911fa6afaf1d8138a.png

六、看懂SQL报错信息

常见错误1:在group by或having子句里使用了select里的别名

having子句先运行,select子句后运行,因此无法识别“平均成绩”这个别名。因此在group by子句和having子句里是无法使用select里的别名的。

ef4c91e7136ba677aa38841bdf53e4d0.png

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

7adea836dca8c8d02d6db1ad2a174f02.png

常见问题1:字符串类型的数字

这一列数字以字符串类型存放,因此在排序或计算最大/小值时都是按照字符串类型的顺序进行排序,因此显示的最大值是99。解决方法就是先将这一列数字的类型改为数字类型再进行后续操作。

50213d825bca902177addb9ccc21845c.png

常见问题2:SQL转义字符

在字符串中,有些符号有特殊含义,比如Eugene O'Neill中的单引号('),使用两个单引号('')表示字符串里面的单引号('),也就是转义字符。这个例子里,Eugene O'Neill,在sql里这么写'Eugene O''Neill'

dac7ad92857b5530c06b24db9ad226b3.png

技巧1:运算符in

98766636cb5d8936b3c6d3e46bf48ef4.png

七、总结

58d4bc82d78754db01c07821c0e94ae2.png

八、练习

Chestnut-J:SQL汇总分析—练习(三)​zhuanlan.zhihu.com
b14ef82ae40de505db5ec01fded7d01b.png