企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[toc] ## 聚合函数 求和、求平均数、求最大值、最小值、四舍五入、总记录数(不包含null) ### SUM ``` 计算ID=1的学生的的总分 select SUM(grade) as '总分' from score where student_id = 1; ``` ### AVG ``` 计算ID=1的学生的的平均分 select AVG(grade) as '平均分' from score where student_id = 1; ``` ### MAX、MIN ``` 计算ID=1的学生的的平均分 select AVG(grade) as '平均分',MAX(grade) 最高分,MIN(grade) 最低分 from score where student_id = 1; ``` ### ROUND ROUND(...,n) ### 关于count - 若select的字段对应的记录的信息为null,count是不会算的 - count中若是一个常量,会添加一列 ``` SELECT COUNT(1) FROM score ``` ## 分组 分组查询就是按某列的值进行分组,相同的值分成一组,然后可以对此组内进行求平均、求和等计算 >语法: >SELECT 列名,查询表达式 FROM <表名> WHERE <条件> GROUP BY <分组字段> HAVING 分组后的过滤条件 ORDER BY 列名 [ASC,DESC] LIMIT 偏移量,条数 ### 注意事项 >having 过滤的是分组后得到的列表里的 >SELECT列表中只能包含: >- 被分组的列 >- 为每个分组返回一个值的表达式,如聚合函数 ![](http://img.zhufengpeixun.cn/splitgroup.png) ## 子查询 ### 比较运算与子查询 ![](https://box.kancloud.cn/a150a8ff6d871a302661a1c9076be897_723x163.png) ### all 与 子查询 大于最大值 ![](https://box.kancloud.cn/102cc575ae4ef1091a5036fd34eba74f_959x263.png) 等于`select MAX(age) from...` ### any ALL 全部 ``` from student WHERE age = ANY (SELECT age FROM student WHERE province = '陕西省') ``` ### some SOME 某些 ``` SELECT * from student WHERE age = SOME (SELECT age FROM student WHERE province = '陕西省') ``` ### in/not in;exists/not exists ## 表连接 ### 连接类型 - JOIN=INNER JOIN=CROSS JOIN 内连接 - LEFT [OUTER] JOIN 左外连接 - RIGHT [OUTER] JOIN 右外连接 - ON 连接条件 ![](http://img.zhufengpeixun.cn/tablejoin.jpg) ### 内连接 两种写法 ![](https://box.kancloud.cn/b8a0377d65af41fc96bb5c18932839fc_664x142.png)