oracle 窗口函数over
select *,sum(字段) over()from table ;--相加所有行这个字段的和
select max(字段1),over(partition by 字段2,字段3) from table ;--根据字段2和字段3分区取出字段1的最大的
相当于
select max(字段1) from table group by 字段2,字段3;
不过上面的sql会列出所有的行数,然后每一行多一个字段,字段值是一样的
这里的max 可以相应的改成min,avg,sum() 等等
但是如果出现
select 字段2,字段3 max(字段6) over (partition by 字段2,字段3 )from table group by 字段2,字段3,字段5;
会报错的,因为max中的字段6没有在group 中。
可以使用子语句嵌套一下 让最顶层的select 不要出现group BY (SELECT * MAX() OVER() (SELECT .. FROM TABLE GROUP BY ..) )
正确写法是
select t.* max(字段6) over (partition by 字段2,字段3 )
from
(select 字段2,字段3,字段5,字段6 from table group by 字段2,字段3,字段5,字段6)t;
这样每个字段2,字段3相同的值后面多一个相同的值
想要的结果应该是
select 字段2,字段3,字段5,maxp from (
select t.* max(字段6) over (partition by 字段2,字段3 ) maxp from (select 字段2,字段3,字段5,字段6 from table group by 字段2,字段3,字段5,字段6)t
)tt
group by 字段2,字段3,字段5,maxp
可以使用子语句嵌套一下
oracle 窗口函数over的更多相关文章
- oracle窗口函数中range interval的使用
oracle窗口函数中range interval配合一般用来针对指定时间范围进行统计.其中range表示范围,between...and 表示之前的范围和之后的范围 , CURRENT ROW表示当 ...
- ORACLE窗口函数
--ORACLE窗口函数,是针对分析用的. --create tablecreate table EMP ( empno NUMBER(4) not null, ename VARCHAR2(10), ...
- Oracle窗口函数显示想要的行数
Oracle中支持窗口函数ROW_NUMBER(),其用法和 MSSQLServer2005中相同,比如我们 执行下面的 SQL语句: SELECT * FROM ( SELECT ROW_NUMBE ...
- oracle 窗口函数 (keep)
看到很多人对于keep不理解,这里解释一下! Returns the row ranked first using DENSE_RANK2种取值:DENSE_RANK FIRSTDENSE_RANK ...
- Oracle树形结构数据---常见处理情景
Oracle树形结构数据---常见处理情景 1.查看表数据结构 SELECT * FROM QIANCODE.TREE_HIS_TABLE T ORDER BY T.NODE_LEVEL; ...
- Hive新功能 Cube, Rollup介绍
说明:Hive之cube.rollup,还有窗口函数,在传统关系型数据(Oracle.sqlserver)中都是有的,用法都很相似. GROUPING SETS GROUPING SETS作为GROU ...
- SQL金典
ps:补充自己的基础知识,大神请无视.. ~~~~~~~~~~~~~~~~~~~~~ DataBase Management System,DBMS.... Catalog ...库 Table... ...
- LeetCode:180.连续出现的数字
题目链接:https://leetcode-cn.com/problems/consecutive-numbers/ 题目 编写一个 SQL 查询,查找所有至少连续出现三次的数字. +----+--- ...
- Oracle开发之窗口函数 rows between unbounded preceding and current row
目录=========================================1.窗口函数简介2.窗口函数示例-全统计3.窗口函数进阶-滚动统计(累积/均值)4.窗口函数进阶-根据时间范围统计 ...
随机推荐
- kvm虚拟化管理
虚拟化 KVM (kernel-based virtual machine) 常见的一些虚拟化的软件xen kvm vmware esx openVZ Oracle VM VirtualBox vsp ...
- Anaconda换源小记
如果还没有安装可以参考:https://www.cnblogs.com/dotnetcrazy/p/9158715.html 一键更新所有库:conda update --all 清华的源有时候有点小 ...
- mysql查看正在执行的sql语句
有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到.好处是不用设置,不会保存. -- use information_schema; ...
- java 遍历方法 及 数组,ArrayList,HashMap,HashSet的遍历
一,遍历方法的实现原理 1.传统的for循环遍历,基于计数器的: 遍历者自己在集合外部维护一个计数器,然后依次读取每一个位置的元素,当读取到最后一个元素后,停止.主要就是需要按元素的位置来读取元素. ...
- 洛谷P2050 美食节
修车加强版.发现每个厨师拆成p个点太浪费了,毕竟总共用到的才p个点.于是从下往上一个一个加,加到满流就停. 论动态加点费用流的正确姿势...... 我自己加总是出现负环...我是每次加一整层,然后跑完 ...
- 洛谷P4169 天使玩偶 CDQ分治
还是照着CDQ的思路来. 但是有一些改动: 要求4个方向的,但是可爱的CDQ分治只能求在自己一个角落方向上的.怎么办?旋转!做4次就好了. 统计的不是和,而是——max!理由如下: 设当前点是(x,y ...
- A1139. First Contact
Unlike in nowadays, the way that boys and girls expressing their feelings of love was quite subtle i ...
- Java 接口篇
为什么使用接口? 问题 要求实现防盗门的功能 分析 门有开和关的功能,锁有上锁和开锁的功能 将门和锁分别定义为抽奖类 那么问题就是防盗门即继承了门的同时又继承了锁,而Java的继承是单继承,接口可多继 ...
- Python 的内置函数
函数 功能 示例 示例结果 abs(x) 返回x的绝对值 abs(-2) 2 chr(x) 返回整数x所代表的字符 chr(65) A divmod(x,y) 返回x除以y的商和余数的元组 divmo ...
- Numpy 笔记: 多维数组的切片(slicing)和索引(indexing)【转】
目录 切片(slicing)操作 索引(indexing) 操作 最简单的情况 获取多个元素 切片和索引的同异 切片(slicing)操作 Numpy 中多维数组的切片操作与 Python 中 lis ...