| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL实用篇四 -> 正文阅读 |
|
[大数据]MySQL实用篇四 |
? ? 本节主要内容:聚合函数、分组查询及Limit使用 1、聚合函数 作用:对查询的结果进行统计计算 常用聚合函数有: COUNT():统计指定列不为NULL的记录行数; MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算; MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算; SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0; AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0; 演练1: 查询employee表中记录数; SELECT COUNT(*) FROM employee; 查询员工表中有绩效(performance)的人数; SELECT COUNT(performance) FROM employee; 查询员工表中月薪大于2500的人数; SELECT COUNT(*) FROM employee WHERE salary>2000; 统计月薪(salary)与绩效(performance)之和大于5000元的人数; SELECT COUNT(*) FROM employee WHERE IFNULL(salary,0) + IFNULL(performance,0) >5000; 查询有绩效(performance)的人数,和有管理费(manage)的人数; SELECT COUNT(performance), COUNT(manage) FROM employee ; 演练2: 查询所有员工的月薪之和; SELECT SUM(salary) FROM employee; 查询所有员工的月薪之和,以及所有员工的绩效之和; SELECT SUM(salary) , SUM(performance) FROM employee; 查询所有员工月薪+绩效之和; SELECT SUM(salary+IFNULL(performance,0)) FROM employee; 统计所有员工的平均工资; SELECT AVG(salary) FROM employee; 查询最高工资和最低工资; SELECT MAX(salary), MIN(salary) FROM employee; 2、分组查询 作用:将查询结果按照1个或多个字段进行分组,字段值相同的为一组。 使用: SELECT gender FROM employee GROUP BY gender; 根据gender字段来分组,gender字段的全部值只有两个('男'和'女'),所以分为了两组; 当group by单独使用时,只显示出每组的第一条记录;例如:select * from employee group by gender; 所以group by单独使用时的实际意义不大; 分组+group_concat的使用: Group_concat(字段名)可以作为一个输出字段来使用; 表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合; 例:select department group_concat('name') from employee group by department; #按照部门分组,并列出分组后的所有员工的姓名; 分组注意事项:在使用分组时,select后面直接跟的字段一般都出现在group by后。 分组+聚合函数的使用: 例:查询每个部门的部门名称和每个部门的工资和; Select department , group_concat(salary),sum(salary) from employee group by department; 例:查询每个部门的部门名称以及每个部门的人数; Select department ,group_concat(name) ,count(*) from employee group by department; 例:查询每个部门的部门名称以及每个部门工资大于1500的人数; Select department , group_concat(salary),count(*) from employee where salary>1500 group by department; 分组+having的使用 Having:用来分组查询后指定一些条件来输出查询结果; 其作用同where一样,但having只能用于group by; 例:查询工资总和大于9000的部门名称以及工资和; Select department,group_concat(salary),sum(salary) from employee group by department having sum(salary) >9000; having与where的区别: having是在分组后对数据进行过滤; where是在分组前对数据进行过滤; having后面可以使用聚合函数; Where 后面不可以使用聚合函数; where是对分组前记录的条件,如果某行记录没有满足where子句的条件,那么这行不会参加分组; 而having是对分组后数据的约束。 例:查询工资大于2000的,工资总和大于6000的部门名称以及工资和; Select department,group_concat(salary),sum(salary) from employee where salary>2000 group by department having sum(salary)>6000 order by sum(salary) desc; 查询工资大于2000的; Select salary from employee where salary>2000 查询各部门工资; Select department ,group_concat(salary) from employee where salary>2000 group by department; 各部门工资总和; Select department ,group_concat(salary),sum(salary) from employee where salary>2000 group by department; 各部门工资总和大于6000; Select department ,group_concat(salary),sum(salary) from employee where salary>2000 group by department having sum(salary)>6000; 各部门工资总和大于6000降序排列; Select department ,group_concat(salary),sum(salary) from employee where salary>2000 group by department having sum(salary)>6000 order by sum(salary) desc; 3、Limit Limit 参数1,参数2; 作用:从哪一行开始查,总共要查几行; 分页思路: Int? curPage=1;---当前页; Int? pageSize=3;---每页多少条数据; ---当前页为1 第一页从0开始 (1-1)*3=0 ---当前页为2 第二页从3开始 (2-1)*3=3 …… Select * from employee Limit (curPage-1)*pageSize,pageSize; ? ?? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:28:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |