sqlserver的查询(三)

        

目录

10. group by(分组)

11. having(对分组后的信息过滤)


 可能从这里开始,执行顺序越来越显得重要了!!!

10. group by(分组)

        ·这个查询相比前面会有一些困难; 

        格式:group by 字段的集合;

        功能:把表中的记录按照字段分成不同好的组;

        注意: group by a , b , c ;先按 a 分组,在 a 相同的情况下,再按 b 分组,在 b  相同的情况的情况下,再按 c 分组,最后统计的是最小分组的信息; 

                组的整体信息:经过 “统计” 操作而得到的信息 ;

                组的详细信息:比如直接输出的某个字段;

--group by 之后只出现分组后的整体信息,不能出现组内整体信息;
select deptno ,avg(sal) as "部门平均工资"--表示输出编号分别为10,20,30数据的平均数
    from emp 
    group by deptno;


select deptno,avg(sal) as "部门平均工资",ename--报错,ename的数据前面输出三行,而ename输出14行;
    from emp 
    group by deptno; --group by 之后只出现分组后的整体信息,不能出现组内整体信息;


select deptno,job ,avg(sal) as "平均工资"--okok
    from emp
    group by deptno ,job
    order by deptno,job;


select deptno ,job,avg(sal) as "平均工资",count(*)as"部门人数",--集合函数都可以使用
    sum(deptno)"总数",max(sal)as"最大值",min(sal)as"最小值"

--集合函数操作的都是最小分组信息


    from emp
    group by deptno,job
    order by deptno,job; 

11. having(对分组后的信息过滤)

(前面学习的聚合函数功能为将多行记录返回一个值,用于统计分组的信息)

--having(对分组后的数据过滤,一般会先使用group by;倘若没有出现group by,则默认having把整张表当作一组进行过滤
select max(sal)as"最高工资" from emp;
--输出【平均工资大于2000的】部门平均工资
select deptno,avg(sal)as"平均工资" from emp group by deptno having avg(sal)>2000;
select deptno,avg(sal)as"平均工资" from emp group by deptno;--分组查询编号为10,20,30的部门的平均工资
select deptno,avg(sal) as "平均工资" from emp group by deptno having count(*)>5;--分组查询员工个数大于5的部门的平均工资

--把姓名不包含A的员工按部门编号分组,统计输出部门平均工资大于2000的部门
--where必须写在having的前面,顺序不可颠倒;
select deptno,avg(sal),count(*)from emp 
        where ename not like '%A%'--对原始的数据过滤,必须放在前面
        group by deptno
        having avg(sal)>2000;--对分组后的数据过滤
        select * from emp;


        select deptno,avg(sal) from emp -----------------------------error
        group by deptno
        having avg(sal)>2000
        where ename not like '%A%';

--倘若没有出现 group by,只出现 having,则默认 having 把整张表当作一组进行过滤(很少用)
--where和having一样,都不允许出现字段的别名;

select deptno,avg(sal) as "平均工资" from emp group by deptno having "平均工资">2000--不可以使用别名,与执行顺序有关
select ename as "部门" from emp where ename not like '%A%';

        学完group by 和 having 感觉到麻木,无助,痛苦!

        希望大家多多留言,指导一下数据库的学习新的和学习经历,感谢啦。

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

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

相关文章

Java进阶学习笔记8——单继承、Object类、方法重写

Java 是单继承的,Java中的类不支持多继承,但是支持多层继承。 Object类是所有类的父类。 Java不支持多类继承: Java支持多层继承: 反证法: Object类: Object类是java所有类的祖宗类,我们写的任…

每日AIGC最新进展(10):符号音乐生成SYMPLEX、新型图像编辑数据集ReasonPix2Pix、角色一致性插画生成、高级的风格个性化扩散模型

Diffusion Models专栏文章汇总:入门与实战 SYMPLEX: Controllable Symbolic Music Generation using Simplex Diffusion with Vocabulary Priors http://arxiv.org/abs/2405.12666v1 本文介绍了一种新的符号音乐生成方法,名为SYMPLEX,它基于…

【QGIS入门实战精品教程】5.3:CGCS2000转Lambert投影

参考阅读: 【GlobalMapper精品教程】081:WGS84/CGCS2000转Lambert投影 文章目录 一、加载实验数据二、投影转换三、批量投影转换一、加载实验数据 加载配套实验数据,如下图所示:图层为长沙市范围、长沙市酒店宾馆分布点位、湖南省酒店分布点位矢量数据。 双击图层,打开信…

网段与广播域

ip地址与子网掩码做与运算得到网络号,得到的网络号相同就是同一个网段,否则不是,跟他们在什么位置没有任何关系 这里面pc3和前两个pc虽然不在同一个网段,但是pc1发广播包的时候,pc3也能收到,因为路由器的所…

Vue 安装vue

1、官网安装下载安装nodejs 2、安装完成后,通过命令查看版本,可以查看到版本 node -v npm -v 3、安装Vue CLi npm install -g vue/cli 4、创建项目,vue create test 如果遇到报错: ERROR Error: spawn yarn ENOENT Error: spawn yarn ENOENT at ChildP…

Dilworth 定理

这是一个关于偏序集的定理,事实上它也可以扩展到图论,dp等中,是一个很有意思的东西 偏序集 偏序集是由集合 S S S以及其上的一个偏序关系 R R R定义的,记为 ( S , R ) (S,R) (S,R) 偏序关系: 对于一个二元关系 R ⊂…

用 vue3 + phaser 实现经典小游戏:飞机大战

本文字数:7539字 预计阅读时间:30分钟 01 前言 说起小游戏,最经典的莫过于飞机大战了,相信很多同学都玩过。今天我们也来试试开发个有趣的小游戏吧!我们将从零开始,看看怎样一步步实现一个H5版的飞机大战&a…

【pyspark速成专家】4_Spark之RDD编程2

目录 四,常用PairRDD的转换操作 五,缓存操作 四,常用PairRDD的转换操作 PairRDD指的是数据为长度为2的tuple类似(k,v)结构的数据类型的RDD,其每个数据的第一个元素被当做key,第二个元素被当做value. reduceByKey #reduceByKey…

如何参与github开源项目并提交PR

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,目前工作于上海某电商服务公司…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&…

高速公路定向广播(声光一体) HT-600D

1、产品概述: HT-600D声光一体平面波IP定向广播是北京恒星科通创新性研发产品,采用公司自主研发的平面波传声技术,该产品具有高声压、强指向性、高清晰度等特点,采用定向声传声技术将声音聚集到正前方定向传输,周边声压级明显降低…

YOLOV10实时端到端目标检测

代码地址:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection 论文地址:https://arxiv.org/pdf/2405.14458 本文介绍了YOLO系列目标检测器在实时和高效方面的优势,但是仍然存在一些缺陷,包括依赖非极大值…

React useState修改对象

在 React 中,useState 是一个 Hook,它可以让函数组件拥有状态。当想要改变一个对象类型的状态时,我们需要使用展开运算符(...)或者 Object.assign 来确保状态是正确地更新。 以下是一个使用 useState 来更新对象的例子…

webstorm新建vue项目相关问题

前言 这个迭代后端需求偏少,前端code的键盘都起火星子了。来了4个外包支持,1个后端3个前端,还是不够用啊。刚好趁这个机会稍微学习下vue,其实之前环境也配置过了,所以这里就不分享环境配置了,主要分享下新建…

Java开发大厂面试第22讲:Redis 是如何保证系统高可用的?它的实现方式有哪些?

高可用是通过设计,减少系统不能提供服务的时间,是分布式系统的基础也是保障系统可靠性的重要手段。而 Redis 作为一款普及率最高的内存型中间件,它的高可用技术也非常的成熟。 我们今天分享的面试题是,Redis 是如何保证系统高可用…

什么是组态?什么是工业控制中的组态软件?

随着工业4.0和智能制造的发展,工控软件的应用越来越广泛,它们在提高生产效率、降低能耗和减少人力成本等方面发挥着越来越重要的作用。 什么是工控软件? 工控软件是指用于工业控制系统的软件,主要应用于各种生产过程控制、自动化…

PLSQL连接Linux Oracle21c

PLSQL连接Linux Oracle21c 一、安装PLsql 下载官网 https://www.allroundautomations.com/registered-plsqldev/ 二、Oracle Instant Client下载 使用plsql连接oracle的时候是需要本地先安装oracle客户端,英文名就是Oracle Instant Client。 官方下载地址&…

初出茅庐的小李博客之用MQTT.fx软件进行消息发布与订阅【 基于EMQX Cloud】

MQTT.fx软件使用简单介绍 MQTT.fx 的软件界面如下图所示,最上方为 MQTT Broker 连接地址栏,及其连接配置。其下方功能 Tabs 含有 Publish 发布栏、Subscribe 订阅栏、Scripts 脚本栏、Broker Status 状态消息栏、Log 日志信息控制栏。 连接之前要明确几…

【Linux系列】软链接使用

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

深入编程逻辑:从分支到循环的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、编程逻辑的基石:分支与循环 分支逻辑详解 代码案例:判断整数是…

UE5 双手握剑的实现(逆向运动学IK)

UE5 双手握剑的实现 IK 前言 什么是IK? UE官方给我们提供了很多对于IK处理的节点,比如ABRIK、Two Bone IK、Full Body IK 、CCD IK等,但是看到这,很多人就好奇了,什么是IK? 首先我们来看看虚幻小白人的骨…