首页 > 数据库 >MySQL之分组函数学习

MySQL之分组函数学习

时间:2023-10-09 12:44:36浏览次数:43  
标签:salary group 函数 employees 分组 MySQL id select

分组函数: 用作统计使用,又称为聚合函数或统计函数

 

分类: sum求和、 avg 平均值、 max最大值 、min最小值、 count计算个数

 

特点:

sum 、avg 一般用于处理数值型

max 、 min、count可以处理任何类型

 

可以和distinct 搭配实现去重的运算

select sum(distinct salary),sum(salary) from employees;

 

4,count函数

详细介绍:

select   count(salary)  from employees;

select count(*) from employes; #统计行数 *和常量等价 select count(1) from employees 的返回结果一样

myisam 存储引擎下 count(*)的效率高

innodb 。。。。xia count(*)和count(1)的效率差不多 ,比count(字段)效率要高,因为要查一下字段 ,会在表前面加一列

 

6,和分组函数一同查询的字段有限制 

和分组函数一同查询的字段要求是group by后的字段

select avg(salary),employees_id from employess 不行-》因为表格不规范

 

7, 分组查询

特点:

分类:分组前筛选和分组后筛选

分组前筛选:原始表 位置放在group by子句的前面 关键字where

分组后筛选:分组后的结果集 位置放在group by子句的后面  关键字having

     分组函数做条件肯定放在having子句中

      能用分组前筛选的,前后都有的以分组前为标总,比如Null

案例:查询每个部门的平均工资

select avg(salary),job_id from employees group by job_id;

select  分组函数 ,列(要出现在group by的后面) from 表 【where 筛选条件 

                                                                                           group by 分组的列表】

                                                                                             【order by子句】

注意:查询列表必须特殊,要求是分组函数和group by后出现的字段

anli:查询每个工种的最高工资

select max(salary), job_id from employees group by job_id;

 

案例:添加分组前的筛选条件
查询邮箱中包含a字符的,每个部门的平均工资

select avg(salary) ,department_id from employees where email like "a"  group by department_id

 

案例2 :查询有奖金的每个领导手下员工的最高工资

select max(salary), manager_id from employer where commission_pct is not null group by manage _id;

 

添加分组后的复杂的筛选条件
案例:查询哪个部门的员工个数>2

第一步:先查询每个部门的员工数

select count(*),department_id from employees group by department_id;
第二步:根据1的结果进行筛选,查询哪个部门的员工个数>2

select  count(*),department_od from employees      group by department_id  having count(*) >2 ,分组完了再统计查询

 

案例:查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

第一步:查询每个工种有奖金的员工的最高工资

select max(salary),job_id from employees group by job_id

第二个:根据1的结果再选,是否大于12000

select max(salary),job_id from employes where commission_pct is not null groupby job_id having (salary) >120000

 

查询领导编号>102的每个领导手下最低工资>5000的领导编号是哪个,以及其最低工资
select min(salary),manager_id from employees where manager_id >102 group by manager_id  having min(salary) >5000;

 

 按表达式分组或函数分组

案例:按员工姓名的长度分组,查询每一组员工个数,筛选员工个数>5的有哪些
select count(*),length(last_name) len_name from employees group bu length(last_name) having count(*) >5;

 

按多个字段分组

案例:查询每个部门每个工种的员工的平均工资
select avg(salary),department_id , jod_id from employees group by department_id ,job_id ;

 

添加排序

案例:查询每个部门每个工种的员工的平均工资按平均工资的高低显示出来

 

select avg(salary),department_id , jod_id from employees where department_id is not null  group by department_id ,job_id  having salary >10000 order by avg(salary) desc; 

 

 

 

 

 

 

 

 

 

 

 

简单使用:

select sum(salary) from employees;

select avg(salary) from employees;

select amx(salary) from employees;

select min(salary) from employees;

select count(salary) from employees;

 

也可以放一起

select sum(salary),avg(salary),max(salary),min(salary),count(salary) from employees;

 

参数支持哪些类型

select sum(last_name) ,avg(last_name) from employees; 虽然不报错,但是不对,名字怎么求和

 

标签:salary,group,函数,employees,分组,MySQL,id,select
From: https://www.cnblogs.com/dalaomysblogs/p/15126251.html

相关文章

  • MySQL DATEDIFF() 函数
    定义和用法DATEDIFF()函数返回两个日期之间的天数。语法DATEDIFF(date1,date2)date1 和 date2 参数是合法的日期或日期/时间表达式。注释:只有值的日期部分参与计算。实例例子1使用如下SELECT语句:SELECTDATEDIFF('2008-12-30','2008-12-29')ASDiffDate 例子2使用如下SE......
  • mysql插入小数变成整数的解决办法
    mysql输入小数自动变为整数,输了半天也不知道怎么回事。 数据库中字段的类型明显设置的是double,float等小数类型,但输入小数的时候,小数就会变成整数。很是奇怪。 使用的是navicat客户端。 仔细察看了一下,发现是在进行表配置的时候,没有配置小数点,见下图。这里把小数按照需求进行......
  • mysql 8 修改用户权限,限制ip远程连接
    因为数据库的安全的问题,不建议使用root用户用来连接数据库进行操作,所以需要创建一个新用户,并且需要指定ip,这样就会更安全,因为不是指定的ip,那么就连接不到mysql因为有多个服务器需要连接到mysql,并且最好是使用一个账号来连接,因为账号太多不易管理,所以就需要创建一个账号,并且指定......
  • C语言 - malloc与free函数
    C 内存管理本章将讲解C中的动态内存管理。C语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。在C语言中,内存是通过指针变量来管理的。指针是一个变量,它存储了一个内存地址,这个内存地址可以指向任何数据类型的变量,包括整数、浮点数、字......
  • 获取mysql库表清单和字段清单——MySQL查询表和字段注释信息
    最近接到一个需求,就是整理现有系统的库表清单和字段清单用于交付一个系统那么多表和字段,这工作量可不小啊作为一个技术人当然不甘于这样认输,果断查找是否可以通过sql查出,最后还是找到了一、前言说明在mysql中,information_schema这个数据库中保存了mysql服务器所有数据库的信息......
  • PostGIS常用函数
    1、st_astext2、3、st_dumppointsST_DumpPoints函数将几何对象中的所有点转换为单独的行,并返回一个包含所有点的几何对象集合。以下是一个示例查询,它将一个MULTIPOLYGON对象转换为坐标集合,并使用ST_AsText函数将其转换为WKT格式的字符串:SELECTST_AsText((dp).geom)FRO......
  • 安装MySQL报错
    报错1:初始化报错mysqld:errorwhileloadingsharedlibraries:libaio.so.1:cannotopensharedobjectfile:Nosuchfileordirectory 缺少libaio.so.1共享库文件。libaio是一个用于异步I/O操作的库,MySQL依赖于它。解决这个问题的方法是安装libaio库。yum-yin......
  • mac mysqld停止
    sudo/usr/local/mysql/support-files/mysql.serverstop//停止sudo/usr/local/mysql/support-files/mysql.serverstart//启动sudo/usr/local/mysql/support-files/mysql.serverrestart//重启重启MySQL提示MySQLserverPIDfilecouldnotbefound!StartingMy......
  • .Net析构函数再论(CLR源码级的剖析)
    前言碰到一些问题,发觉依旧没有全面了解完全析构函数。本篇继续看下析构函数的一些引申知识。概述析构函数目前发现的总共有三个标记,这里分别一一介绍下。先上一段代码:internalclassProgram:IDisposable{staticvoidMain(string[]args){StreamReader?......
  • 双目标定中stereoCalibrate()函数
    用于标定立体相机函数形式C++:cvStereoCalibrate(constCvMat*object_points,constCvMat*image_points1,constCvMat*image_points2,constCvMat*npoints,CvMat*camera_matrix1,CvMat*dist_coeffs1,CvMat*camera_matrix2,CvMat*dist_coeffs2,CvSizeimage_size,C......