- 汇总分析
汇总函数:
count:求某列的行数
sum:对某列数据求和
avg:求某列数据的平均值
max:求某列数据的最大值
min:求某列数据的最小值
· 用法:
SELETE <函数(可嵌套函数)> FROM <表名>;
应用案例:
2. 分组查询
· 用法:
SELETE <字段>,<函数>,…… FROM <表名> WHERE <条件> GROUP BY <字段>;
应用案例:
3. 对分组结果制定条件
· 用法:
SELETE <字段>,<函数>,…… FROM <表名> WHERE <条件> GROUP BY <字段> HAVING <条件>;
应用案例:
补充:HAVING关键字和WHERE关键字都是过滤数据的,二者有何区别?
解答:HAVING在数据分组之后进行过滤来选择分组,而WHERE是在分组之前选择记录。
WHERE排除的记录不再包括在分组里。
4. 用SQL解决业务问题
理解业务问题>>写出分析思路>>写出对应的SQL语句
应用案例:
问题理解:查询出平均成绩大于等于80分的课程号及对应平均成绩
关键字段:课程号,平均成绩
数据来源:course(其中包含学号、课程号、成绩)
分组维度:课程号
条件:平均成绩大于等于80分
5. 对查询结果排序
· 用法:
SELETE <字段1>,<字段2>,…… FROM <表名> WHERE <条件>
GROUP BY <字段> HAVING <条件> ORDER BY <字段1><关键字1>,<字段2><关键字2>……;
· 说明:
①对查询结果进行排序使用ORDER BY子句;
②当ORDER BY子句后以字段结尾(未指定排序方式),默认从第一列开始升序排序,如果第一列数据中
所有值唯一,将不再对第二列进行排序。
③需要指定排序方向时,使用关键字DESC表示降序,ASC表示升序;
④对多列进行排序时,会依照子句中列名的先后顺序进行排序。
应用案例:
6. 限制查询结果数量:
· 用法:
在语句末尾加上LIMIT关键字,如果LIMIT后面只有一个数字,则表示起始行为第一行。
SELETE ……FROM …… LIMIT[位置偏移量(即起始行-1)],[行数];
7. 如何看懂报错信息
在Navicat运行界面下方有信息选项卡,可以据此判定在哪里发生何种错误。
常见问题:
① 在GROUP BY中使用了SELECT的别名;
② 在WHERE中使用聚合函数(如count等);
③ 数字类型错误设置为字符串类型,导致排序错误。
习题1:
总结:
1> like的语法不熟练,需要另外练习;
2> 转义单引号的方式是在前面多打一个,让系统识别下一个是单引号标识;
3> 记住类似最后一题,可以将特殊字符转为0或1这种灵活应用。
习题2:
总结:
用WHERE和HAVING的时候,后面子句的用法掌握不好,写的时候会自我怀疑,需要熟记。