group by,having,order by的用法详解
一,如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中,否则出错。
第一个查询中,deptno没有出现在group by中,也没有出现在分组函数中,因此出错。将deptno改成job就可以了。该条语句的意义为:按工作分组查出每一项工作的平均薪水二,having 子句
oracle 规定where子句不可以使用分组函数,这时我们必须使用having子句方可完成功能。
select job,avg(sal) from emp having avg(sal)>1500 group by job;
使用having子句时,oracle系统的处理顺序是:
1,首先对数据行进行分组。
2,把所得到的分组应用到分组函数中。
3,最好显示满足having条件的记录。
三,分组函数的嵌套
不多说直接上图
该语句的执行顺序是:
1,执行where子句,查出job符合条件的记录。
2,根据job进行分组。
3,根据分组情况求出各组的平均工资。
4,找出各组中最大和最小的平均工资。
相关推荐
-
mysql "group by"与"order by"的研究--分类中最新的内容
这两天让一个数据查询难了.主要是对group by 理解的不够深入.才出现这样的情况 这种需求,我想很多人都遇到过.下面是我模拟我的内容表 复制代码 代码如下: CREATE TABLE `test` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `category_id` INT(10) NOT NULL, `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMES
-
mysql中count(), group by, order by使用详解
最近做IM的时候遇到一个问题,同时用到了这三个关键字.就是查询一个人的离线消息详情,我们服务端返回给客户端显示的这个详情包括了三个内容,第一个要求列出离线这段时间哪些人或者群给你发了消息,第二个这其中的某个人或者群发了多少条离线消息,第三个拿出最新的一条显示出来.很明显,group by分组哪些人或者群给你发了离线消息,count()得到离线消息数量,order by时间来排序拿出最新的消息. select count(1) as cnt, msg_data from t_im_chat_off
-
mysql分组取每组前几条记录(排名) 附group by与order by的研究
--按某一字段分组取最大(小)值所在行的数据 复制代码 代码如下: /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表并插入数据: 复制代码 代码如下: create table tb(name varchar(10),val int,memo varchar(20)
-
深度分析mysql GROUP BY 与 ORDER BY
本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表 我现在需要取出每个分类中最新的内容 select * from test group by category_id order by `date` 结果如下 明显.这不是我想要的数据,原因是msyql已经的执行顺序是 引用 写的顺序:select ... from... where.... group by... having... order by.. 执行顺序:from... where...g
-
mysql中order by与group by的区别
order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有"聚合函数"来配合才能使用,使用时至少需要一个分组标志字段. 什么是"聚合函数"? 像sum().count().avg()等都是"聚合函数" 使用group by 的目的就是要将数据分类汇总.
-
sql中 order by 和 group by的区别
order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有"聚合函数"来配合才能使用,使用时至少需要一个分组标志字段. 什么是"聚合函数"? 像sum().count().avg()等都是"聚合函数" 使用group by 的目的就是要将数据分类汇总. 一般如: select 单位名称,count(职工id),sum(职工工资) f
-
深入解析mysql中order by与group by的顺序问题
mysql 中order by 与group by的顺序是:selectfromwheregroup byorder by注意:group by 比order by先执行,order by不会对group by 内部进行排序,如果group by后只有一条记录,那么order by 将无效.要查出group by中最大的或最小的某一字段使用 max或min函数.例:select sum(click_num) as totalnum,max(update_time) as update_time,
-
Mysql中order by、group by、having的区别深入分析
order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有"聚合函数"来配合才能使用,使用时至少需要一个分组标志字段. 什么是"聚合函数"? 像sum().count().avg()等都是"聚合函数" 使用group by 的目的就是要将数据分类汇总. 一般如: select 单位名称,count(职工id),sum(职工工资)
-
Apache中的Order Allow,Deny用法详解
本文讲述了Apache中的Order Allow,Deny用法.分享给大家供大家参考,具体如下: Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权. 所以,最常用的是: Order Deny,Allow Allow from All 注意"Deny,Allow"中间只有一个逗号,也只能有一个逗号,有空格都会出错:单词的大小写不限.上面设定的含义是先设定"
-
group by,having,order by的用法详解
一,如果一个查询中使用了分组函数,任何不在分组函数中的列或表达式必须要在group by中,否则出错. 第一个查询中,deptno没有出现在group by中,也没有出现在分组函数中,因此出错.将deptno改成job就可以了.该条语句的意义为:按工作分组查出每一项工作的平均薪水二,having 子句 oracle 规定where子句不可以使用分组函数,这时我们必须使用having子句方可完成功能. select job,avg(sal) from emp having avg(sal)>15
-
mysql之group by和having用法详解
GROUP BY语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组返回一个结果. 某个员工信息表结构和数据如下: id name dept salary edlevel hiredate 1 张三 开发部 2000 3 2009-10-11 2 李四 开发部 2500 3 2009-10-01 3 王五 设计部 2600 5 2010-10-02 4 王六 设计部 2300 4
-
Python正则表达式中group与groups的用法详解
目录 1 .group函数 1.1 返回整个匹配结果 1.2 返回指定分组的匹配结果 1.3 处理没有匹配结果的情况 2. groups函数 3. group和groups的使用场景 在Python中,正则表达式的group和groups方法是非常有用的函数,用于处理匹配结果的分组信息.group方法是re.MatchObject类中的一个函数,用于返回匹配对象的整个匹配结果或特定的分组匹配结果.而groups方法同样是re.MatchObject类中的函数,它返回的是所有分组匹配结果组成的元组
-
MySQL两种临时表的用法详解
外部临时表 通过CREATE TEMPORARY TABLE 创建的临时表,这种临时表称为外部临时表.这种临时表只对当前用户可见,当前会话结束的时候,该临时表会自动关闭.这种临时表的命名与非临时表可以同名(同名后非临时表将对当前会话不可见,直到临时表被删除). 内部临时表 内部临时表是一种特殊轻量级的临时表,用来进行性能优化.这种临时表会被MySQL自动创建并用来存储某些操作的中间结果.这些操作可能包括在优化阶段或者执行阶段.这种内部表对用户来说是不可见的,但是通过EXPLAIN或者SHOW S
-
SQL Server中row_number分页查询的用法详解
ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也需要专门一列用于预先排序以便于进行编号. ROW_NUMBER() 说明:返回结果集分区内行的序列号,每个分区的第一行从1开始. 语法:ROW_NUMBER () OVER ([ <partition_by_clause> ] <order_by_clause>) . 备注:ORDER
-
MybatisPlus #{param}和${param}的用法详解
作用 mybatis-plus接口mapper方法中的注解(如@Select)或者xml(如)传入的参数是通过#{param}或者${param}来获取值. 区别 1.解析方式: #{param}:会进行预编译,而且进行类型匹配,最后进行变量替换,括号中可以添加映射类型如 #{param,javaType=int,jdbcType=NUMERIC} ${param}:只实现字符串拼接,并不进行数据类型匹配 ${param}表达式主要用户获取配置文件数据,DAO接口中的参数信息,当 $ 出现在映射
-
Pandas中GroupBy具体用法详解
目录 简介 分割数据 多index get_group dropna groups属性 index的层级 group的遍历 聚合操作 通用聚合方法 同时使用多个聚合方法 NamedAgg 不同的列指定不同的聚合方法 转换操作 过滤操作 Apply操作 简介 pandas中的DF数据类型可以像数据库表格一样进行groupby操作.通常来说groupby操作可以分为三部分:分割数据,应用变换和和合并数据. 本文将会详细讲解Pandas中的groupby操作. 分割数据 分割数据的目的是将DF分割成为
-
MYSQL row_number()与over()函数用法详解
语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over()分组排序功能: 在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where .group by. order by 的执行. 例一: 表数据: create table TEST_ROW_NUMBER_OVER( id varchar(10) not null, name varchar(1
-
MySQL学习之分组查询的用法详解
目录 为什么要分组 逐级分组 逐级分组对 SELECT 子句的要求 对分组结果集再次做汇总计算 GROUP_CONCAT 函数 GROUP BY 子句的执行顺序 该章节来开始学习分组查询,上一章节我们学习了聚合函数,默认统计的是全表范围内的数据,配合上 WHERE 就能够缩小统计的范围了.但是这并不能满足我们的要求,比如说我们按照之前的数据表查询每个部门的平均底薪是多少?这样的记录就需要针对部门编号进行分组了.根据分组的情况统计分组内的最大值.最小值.平均值等等.如此就能够满足刚刚提到的 “查询
随机推荐
- mysql5.7.17 zip 解压安装详细过程
- javascript 循环读取JSON数据的代码
- IOS开发代码分享之用nstimer实现倒计时功能
- JavaScript中:表达式和语句的区别[译]
- JS+CSS实现的经典tab选项卡效果代码
- 几个C#常用正则表达式的总结
- jQuery中的RadioButton,input,CheckBox取值赋值实现代码
- php MessagePack介绍
- php微信公众平台开发(四)回复功能开发
- 详解Swift中属性的声明与作用
- MySQL binlog 远程备份方法详解
- Javascript中字符串和数字的操作方法整理
- node.js不得不说的12点内容
- JS使用post提交的两种方式
- jquery 页面滚动到指定DIV实现代码
- Java数组中的元素删除并实现向前移的代码
- Struts2学习笔记(8)-Result常用类型
- js判断输入框不能为空格或null值的实现方法
- VMware 12 下 Ubuntu 16.04 安装图文教程
- C# Mqtt 断线重连的实现代码