IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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;

? ??

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:44:46  更:2021-12-16 17:45:55 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码