iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL 基础之组函数(九)
  • 134
分享到

SQL 基础之组函数(九)

2024-04-02 19:04:59 134人浏览 薄情痞子
摘要

组函数:– 类型和语法– 使用 AVG, SUM, MIN, MAX, COUNT– 组函数使用 DISTINCT 关键字– 组函数中NULL 值分组函数:作用于一组数据,并对一组数据返回一个值组函数类型A

组函数:

– 类型和语法

– 使用 AVG, SUM, MIN, MAX, COUNT

– 组函数使用 DISTINCT 关键字

– 组函数中NULL 值


分组函数:作用于一组数据,并对一组数据返回一个值


组函数类型

  • AVG 平均值

  • COUNT 统计值

  • MAX 最大值

  • MIN 最小值

  • SUM 合计

  • STDDEV 标准差

  • VARIANCE 方差


组函数语法:

select group_function(column), ... from table [where condition] [order by column];


使用 AVG 和 和 SUM 函数

可以对数值型数据使用 AVG 和 SUM 函数


1、查询job_id为REP的 平均工资,最高工资,工资总和

select avg(salary),max(salary),min(salary),sum(salary) from employees where job_id like '%REP%';

SQL 基础之组函数(九)


使用 MIN 和 和 MAX 


可以对数值型、字符型和日期型使用 MIN 和 MAX 函数


2、查询入职时最短和最长时间

select min(hire_date),max(hire_date) from employees;

SQL 基础之组函数(九)


使用 COUNT 

1、统计一下department_id 为50的部门有多少人

select count(*) from employees where department_id =50;

SQL 基础之组函数(九)


2、如果有空值不会被计算进去

select count(commission_pct)  from employees where department_id=80;

SQL 基础之组函数(九)


3、显示 EMPLOYEES 表中不同的部门数

select count(distinct department_id) from employees;

SQL 基础之组函数(九)


组函数忽略空值


1、统计一下提成

select avg(commission_pct) from employees;

SQL 基础之组函数(九)


2、将所有的人都统计进来

select avg(nvl(commission_pct,0)) from employees;

SQL 基础之组函数(九)


分组数据:GROUP BY

  • 可以使用GROUP BY 子句将表中的数据分成若干组.

  • group by 后面不能使用列别名,select 后面有限制.


1、求出EMPLOYEES中各个部门的平均工资

select department_id,avg(salary) from employees group by department_id order by department_id;

SQL 基础之组函数(九)













2、包含在 GROUP BY 子句中的列不必包含在SELECT 列表中。

select sum(salary) from employees group by job_id;

SQL 基础之组函数(九)


3、进行多组分列,按照部门和工作进行分组得到分组后工资的和

select department_id,job_id,sum(salary) from employees group by department_id,job_id order by department_id;

SQL 基础之组函数(九)


非法使用组函数

SELECT 列表中的列或表达式,未包含在组函数中的列,都必须包含于GROUP BY 子句中

错误:

select department_id, count(last_name) from employees;

select department_id, job_id, count(last_name) from employees group by department_id;

也就是说必须把department_id 和job_id 加入到group by 中



正确:

select department_id, count(last_name) from employees group by department_id;

select department_id, job_id, count(last_name) from employees group by department_id,job_id;



  • 不能使用 WHERE 子句来过滤组

  • 可以使用 HAVING 子句来过滤组


错误:

select department_id, avg(salary) from employees where avg(salary) > 8000 group by department_id;


过滤分组:HAVING  子句

使用 HAVING 子句过滤分组条件:

  • 行已经被分组。

  • 使用了组函数。

  • 满足HAVING 子句中条件的分组将被显示

语法:

select column, group_function from table [where condition]

[group by group_by_expression]

[having group_condition]

[order by column];


1、每个部门的最高薪水大于$10,000

select department_id,max(salary) from employees group by department_id having max(salary)>10000;

SQL 基础之组函数(九)


2.查找不是REP工作的工资总和大于13000的,并按照sum salary排序

select job_id ,sum(salary) from employees where job_id not like '%REP%' group by job_id having sum(salary) > 13000

order by sum(salary);

SQL 基础之组函数(九)


嵌套组函数

按照部门分类显示平均工资的最大值:

select  max(avg(salary)) from employees group by department_id;

SQL 基础之组函数(九)

但是嵌套组函数好像不能在添加新的列了



练习题:

1、找出所有员工工资的最大值,最小值和以及平均值。并以此将各列的别名修改

为”Maximum”,”Minimum”,”Sum”,”Average”。并且要求将结果进行四舍五入。

select round(max(salary) ,0) "Maxinmum", round(min(salary),0) Minimum, round(sum(salary),0) Sum ,round(avg(salary),0) Average from employees;


SQL 基础之组函数(九)


2、以 job_id 进行分组,查看每个工种的工资的最大值,最小值,和,以及平均值

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

SQL 基础之组函数(九)


3、写一个查询语句,统计每一个工种的员工数

select job_id,count(employee_id)from employees group by job_id;

SQL 基础之组函数(九)


4、让HR部门的同事可以输入一个工种,然后 sql 返回该工种的员工数量。

select job_id,count(*) from employees where job_id like '&job_title' group by job_id;

SQL 基础之组函数(九)


5、直接显示出所有经理的总人数。并将该列标记为"Number of Managers".提示:使用 MANAGER_ID 这一列来确定经理的数量

select count(distinct manager_id) "Number of Managers"  from employees;

SQL 基础之组函数(九)


6、查出薪水最高的和薪水最低的差值,并将该列标记为 DIFFERENCE

select max(salary) - min(salary) "DIFFERENCE"  from employees;

SQL 基础之组函数(九)


7、请查询出每个经理手下工资最低的员工,那些没有经理的员工需要排除,并且需要排除那些最低薪水

小于等于6000 组。最后将结构根据薪水以降序排列。

select manager_id,min(salary)

from employees

where manager_id is not null

group by manager_id

having min(salary) > 6000

order by min(salary) desc;

SQL 基础之组函数(九)


8、请编写一条 SQL 语句,查看员工的总数,以及在 1996,1997,1998,1999 这几年被雇佣的员工数量,并为各列取合适的别名。

select count(*) total,

sum(decode(to_char(hire_date, 'fm YYYY'),1999,1,0)) "1999",

sum(decode(to_char(hire_date, 'fm YYYY'),1998,1,0)) "1998",

sum(decode(to_char(hire_date, 'fm YYYY'),1997,1,0)) "1997",

sum(decode(to_char(hire_date, 'fm YYYY'),1996,1,0)) "1996"

from employees;

SQL 基础之组函数(九)


9、请通过一个矩阵显示出所需要的结果,要求是根据部门编号(20,50,80,90)算出对应的工种的工

资,以及该工种的工资总和,对于部门号是 20,50,80,90 这几列来说,请给出一个合适的别名。

select job_id "job",

sum(decode(department_id,20,salary)) "dept 20",

sum(decode(department_id,50,salary)) "dept 50",

sum(decode(department_id,80,salary)) "dept 80",

sum(decode(department_id,90,salary)) "dept 90",

sum(salary) "total"

from employees

group by job_id;

SQL 基础之组函数(九)

您可能感兴趣的文档:

--结束END--

本文标题: SQL 基础之组函数(九)

本文链接: https://www.lsjlt.com/news/36220.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL 基础之时区函数(二十一)
    使用数据类型来存储两个日期时间值之间的时间差使用下列的日期时间函数:– CURRENT_DATE– CURRENT_TIMESTAMP– LOCALTIMESTAMP– DBTIMEZONE– SESSIO...
    99+
    2024-04-02
  • python基础之函数
    函数: # 什么是函数:一系列python语句的组合,可以在程序中运行一次或者多次 # 一般是完成具体的独立的功能 # 为什么要使用函数 # 代码的复用最大化以及最小化冗余代...
    99+
    2024-04-02
  • Python基础之(七)函数
    建立函数 在Python中,规定了一种定义函数的格式,下面的举例就是一个函数,以这个函数为例来说明定义函数的格式和调用函数的方法。 def add_function(a, b): #冒号必须 c = a + b #缩进必须 ...
    99+
    2023-01-31
    函数 基础 Python
  • Doris--基础--13.2--SQl函数--日期函数
    Doris–基础–13.2–SQl函数–日期函数 1、CONVERT_TZ(DATETIME dt, VARCHAR from_tz, VARCHAR to_tz) 转换datetime值dt,从 ...
    99+
    2023-09-04
    sql 数据库 mysql
  • Python基础之(九)错误和异常
    >>> for i in range(10) File "<stdin>", line 1 for i in range(10) ^ SyntaxError:...
    99+
    2023-01-31
    异常 错误 基础
  • Python零基础入门(九)——函数,类和对象
    系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟...
    99+
    2023-08-31
    python pycharm 人工智能 开发语言
  • day 63 Django基础九之中间件
        本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏      我们在前面的课程中已经学会了...
    99+
    2023-01-31
    中间件 基础 day
  • Doris--基础--13.4--SQl函数--字符串函数
    Doris–基础–13.4–SQl函数–字符串函数 1、append_trailing_char_if_absent(VARCHAR str, VARCHAR trailing_char) 如果’s...
    99+
    2023-10-04
    sql 数据库 mysql
  • Java基础之数组详解
    目录前言二.创建数组三.数组的使用四.数组的遍历五.数组作为方法的参数六.数组相关方法Arrays前言 我们了解数组这个概念之前,我们先思考下面几个问题。 如果我们需要两个数据,那么...
    99+
    2024-04-02
  • python基础之内置函数
    https://docs.python.org/3/library/function.html #python官方网址 # 取绝对值 print(a...
    99+
    2024-04-02
  • MySQL必备基础之分组函数 聚合函数 分组查询详解
    目录一、简单使用二、搭配DISTINCT去重三、COUNT()详细介绍四、分组查询一、简单使用 SUM:求和(一般用于处理数值型) AVG:平均(一般用于处理数值型) MAX:最大(...
    99+
    2024-04-02
  • Mysql基础之常见函数
    目录一、常见函数分类1.1单行函数:1.2分组函数:二、单行函数三、数学函数四、日期函数五、其他函数六、控制函数一、常见函数分类 1.1单行函数: 字符函数 字符控...
    99+
    2024-04-02
  • python基础之递归函数
    # 递归满足的条件 # 1.自己调用自己 # 2.必须有一个明确的结束条件 # 优点:逻辑简单\定义简单 # 缺点:防止内存消耗过多,容易导致栈溢出,内存资源紧张,甚至内存泄漏...
    99+
    2024-04-02
  • JavaScript基础之函数详解
    目录一、函数简介1.1.函数的创建1.2.函数的参数和返回值二、函数的类型2.1. 构造函数2.2. 立即执行函数2.3. 构造函数的原型prototype2.4. 函数中的this...
    99+
    2024-04-02
  • python基础之 函数的参数
      一、形参和实参是什么  函数的参数分为形式参数和实际参数,简称形参和实参:  形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。  def func(x,y): #x和y为形参  print(x,y) ...
    99+
    2023-06-01
  • Python基础之函数和模块
    函数的基本使用 函数的定义:把具有独立功能的代码块组织成一个小模块,在需要的时候调用。或者说,函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数的使用:1.定义函数;2.调用函数。 函数的作用:能提高应用的模...
    99+
    2023-01-31
    函数 模块 基础
  • Python基础之sorted()函数用法
    本篇是关于sorted()函数的一些基本用法,如有不足缺陷欢迎补充指正。 1、简单的排序 sorted函数可以对可迭代类型的容器内的数据进行排序 lst1 = (5,4,3,2,1)lst2 = ('...
    99+
    2023-10-12
    python
  • python基础之元组
    元组: # 元组,一种不可变的序列,在创建之后不能做任何的修改 # 1.不可变 # 2.用()创建元组类型,数据项用逗号来分割 # 3.可以是任何的类型 # 4.党员组中只有一...
    99+
    2024-04-02
  • WEB安全之PHP基础(九):正则表达式
    WEB安全之PHP基础(九):正则表达式 正则表达式正则表达式简介正则表达式的基本语法边界限制重复匹配模式选择符模式单元特殊字符模式匹配的顺序元字符表 正则表达式 正则表达式简介...
    99+
    2023-09-12
    php 正则表达式 开发语言
  • Javascrip基础之for循环和数组
    目录循环-forfor循环基本使用退出循环循环嵌套数组数组是什么数组的基本使用遍历数组操作数组总结循环-for for循环基本使用 for循环语法:重复执行代码 好处:把声明起始值、...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作