having子句

目录

having子句

having和where的区别


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

现在要求查询出每个职位的名称,职位的平均工资,但是要求显示平均工资高于 200 的职位

按照职位先进行分组,同时统计出每个职位的平均工资,随后要求只显示那些平均工资高于 200的职位信息

既然现在要对显示的数据进行筛选,自然就会想到使用 WHERE 子句

SQL> select job,avg(sal)2  from emp3  where avg(sal)>20004  group by job;
where avg(sal)>2000*
第 3 行出现错误:
ORA-00934: 此处不允许使用分组函数

此时直接告诉用户,where子句上不允许出现统计函数(分组函数)

因为 group by 子句是在 where子句之后运行的,运行 where子句时还没有进行分组,自然就无法进行统计

所以在这样的 情况下,就必须使用另外一个子句完成: having子句

而此时的 SQL 语法结构变为如下形式

【确定要显示的数据列】select [distinct] * | 分组列 [ 别名 ] , 分组列 [ 别名 ] ...
【确定数据来源(行与列的集合)】from 表名称 [ 别名 ], 表名称 [ 别名 ],...
【针对数据行进行筛选】[where 限定条件 (s)]
【针对筛选的行分组】[group by 分组字段 , 分组字段 , 分组字段 ,...]
【针对筛选的行分组】[having 分组过滤 ]
【对选定数据的行与列排序】[order by  排序字段 [asc | desc], 排序字段 [asc | desc],...]

语法结构在前面的语法基础上增加 having子句,实现筛选的行分组

having子句

SQL> select job,avg(sal)2  from emp3  group by job4  having avg(sal)>2000;JOB                  AVG(SAL)
------------------ ----------
ANALYST                  3000
MANAGER            2758.33333
PRESIDENT                5000

having子句是select语句的可选子句

它用于过滤由group by 子句返回的行分组

这就是为什么having子句通常与group by子句一起使用的原因

having和where的区别

where 不能放在group by 后面
having是跟group by 连在一起用的,放在group by 后面,此时的作用相当于where
hwere后面的条件中不能有聚集函数,比如sum(),avg()等,而having可以

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484794.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[职场] Android是什么?Android行业有哪些- #媒体#经验分享

Android是什么?Android行业有哪些? Android是一个由Google开发的移动操作系统,它被广泛应用于智能手机、平板电脑、智能手表、智能电视等移动设备上。Android系统基于Linux内核,提供了丰富的应用程序框架、用户界面、多媒体支持、网络功能等…

补环境框架过某物

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018…

Linux之用户和用户组的深入了解

目录 一、简介 1.1、用户: 1.2、用户组 1.3、UID和GID 1.3、用户账户分类 查看用户类别 超级用户root(0) 程序用户(1~499) 普通用户(500~65535) 二、用户 2.1、添加新的用户账号:useradd 2.2、删除账号:userdel 有-r与没有-r区别…

petalinux_zynq7 驱动DAC以及ADC模块之四:python实现http_api

前文: petalinux_zynq7 C语言驱动DAC以及ADC模块之一:建立IPhttps://blog.csdn.net/qq_27158179/article/details/136234296petalinux_zynq7 C语言驱动DAC以及ADC模块之二:petalinuxhttps://blog.csdn.net/qq_27158179/article/details/1362…

Java并发基础:原子类之AtomicBoolean全面解析

本文概要 AtomicBoolean类优点在于能够确保布尔值在多线程环境下的原子性操作,避免了繁琐的同步措施,它提供了高效的非阻塞算法实现,可以大大提成程序的并发性能,AtomicBoolean的API设计非常简单易用。 AtomicBoolean核心概念 …

运维07:堡垒机

什么是跳板机 跳板机就是一台服务器而已,运维人员在使用管理服务器的时候,必须先连接上跳板机,然后才能去操控内网中的服务器,才能登录到目标设备上进行维护和操作 开发小张 ---> 登录跳板机 ---> 再登录开发服务器 测试…

十四、图像几何形状绘制

项目功能实现&#xff1a;矩形、圆形、椭圆等几何形状绘制&#xff0c;并与原图进行相应比例融合 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING { public:void…

解决Jenkins-2.396启动报错:Failed to start Jenkins Continuous Integration Server.

场景&#xff1a;现有环境已经使用Java 8在运行业务&#xff0c;安装Jenkins后启动报错。 原因&#xff1a;因为Jenkins-2.396 依赖于Java 11 版本才能启动。 解决方法&#xff1a; yum 安装Java11 yum install java-11-openjdk-devel java-11-openjdk 或者二进制安装java11修…

「Web架构模式」模式:前端的后端(BFF)

面向用户界面和外部方的单用途边缘服务 介绍 随着web的出现和成功&#xff0c;交付用户界面的实际方式已经从厚客户端应用程序转变为通过web交付的界面&#xff0c;这一趋势也使基于SAAS的解决方案总体上得以发展。通过web提供用户界面的好处是巨大的——主要是因为发布新功能的…

【监督学习之线性回归】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要知识图谱 简述概要 了解什么是线性回归 知识图谱 监督学习中的线性回归是一种预测模型&#xff0c;它试图通过拟合一个线性方程来建立输入变量&#xff08;特征&#xff09;和输出变量&#xff08;目标值&#x…

抢位|面向所有软件工程师的北京线下技术活动

参加一场线下活动&#xff0c;收获所有软件工程师都会遇到的三大技术难题的创新解决思路&#xff01; ​当我们谈论性能时&#xff0c;我们在谈论什么 性能优化在软件工程中扮演着关键角色&#xff0c;它直接影响系统的运行效率和用户体验。 作为 Tubi 高级研发副总裁&#…

Docker学习一

一 Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用…