当前位置: 首页 > news >正文

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 感觉到麻木,无助,痛苦!

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

相关文章:

  • 如何确保大模型 RAG 生成的信息是基于可靠的数据源?
  • c语言游戏实战(3):三子棋
  • 如何用pyecharts工具制作地图
  • SpringBoot 集成 Nebula
  • mysql内存结构
  • golang 连接mysql数据库
  • 在docker中运行SLAM十四讲程序
  • 2903. 找出满足差值条件的下标 I
  • 博客说明 5/12~5/24【个人】
  • 超级初始网络
  • python使用xlrd读取excel的时候把字符串读成了数字
  • 【计算机网络】HTTPS 协议原理
  • 【pyspark速成专家】7_SparkSQL编程1
  • 高职物联网专业嵌入式系统开发教学解决方案
  • 【Unity实战】Mirror/UNET中SyncVar和SyncList需要注意的点
  • 【Leetcode】101. 对称二叉树
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Java|序列化异常StreamCorruptedException的解决方法
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Nodejs和JavaWeb协助开发
  • oldjun 检测网站的经验
  • Vue 动态创建 component
  • Webpack 4x 之路 ( 四 )
  • 从0到1:PostCSS 插件开发最佳实践
  • 从零开始的无人驾驶 1
  • 诡异!React stopPropagation失灵
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 排序(1):冒泡排序
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 深度解析利用ES6进行Promise封装总结
  • 手写一个CommonJS打包工具(一)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • - 转 Ext2.0 form使用实例
  • 数据库巡检项
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)Java 简介
  • (20050108)又读《平凡的世界》
  • (c语言)strcpy函数用法
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)ABI是什么
  • (转)大型网站的系统架构
  • .cfg\.dat\.mak(持续补充)
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .netcore 获取appsettings
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [10] CUDA程序性能的提升 与 流