sql语句关键字over的作用及用法
来源:互联网 发布:生物信息 python 编辑:程序博客网 时间:2024/05/18 03:45
在应用具体的聚合函数、排名函数前对行集的分区和排序。over子句,用于支持窗口的计算,所以一般与排名开窗函数、聚合开窗函数一起使用。
窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。 以前使用聚合函数必须分组,即便没有group by 子句,也是默认将表中所有的数据分成了1组,来聚合。通过使用over子句可以在不分组的情况下实现聚合运算,在查询结果集中既包含基础行的数据也包含聚合函数的值。(可以把over()子句理解成是“后台运行的数据”,只是为了让聚合函数或者是排名函数“用一下”,并不影响实际显示的数据。在后台提供数据。)
over子句的两种使用方式: 1.over子句与排名开窗函数一起用,语法:over([partition by 列1] order by 列2)。必须有order by 子句 2.over子句与聚合开窗函数一起用,语法:over([partition by 列1])不能使用order by子句了。【先演示这个】 注:当over()子句与聚合函数一起使用时,也可以直接写count(*) over()不在over()子句中进行任何分区,表示把整个表分为一个区。 第1种使用方式 over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。 其参数:over(partition by columnname1 order by columnname2) 含义:按columname1指定的字段的值,对查询后的结果集进行分组再组内排序,形成结果集中的一个新列。若SQL语句最后有order by,则把最终的结果集再整体排序。 例如:employees表中,有两个部门的记录:department_id =10和20 SQL语句“select department_id ,salary,rank() over(partition
by department_id order by salary ) from Employees ”,就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是没有partition by部分,则是在整个公司内进行排名。
第2种使用方式 下面的示例对于查询返回的所有行,将 OVER 子句与聚合函数一起使用。
在这个示例中,使用 OVER 子句与使用子查询相比,可以更高效地派生聚合值。
窗口是用户指定的一组行。开窗函数计算从窗口派生的结果集中各行的值。 以前使用聚合函数必须分组,即便没有group by 子句,也是默认将表中所有的数据分成了1组,来聚合。通过使用over子句可以在不分组的情况下实现聚合运算,在查询结果集中既包含基础行的数据也包含聚合函数的值。(可以把over()子句理解成是“后台运行的数据”,只是为了让聚合函数或者是排名函数“用一下”,并不影响实际显示的数据。在后台提供数据。)
over子句的两种使用方式: 1.over子句与排名开窗函数一起用,语法:over([partition by 列1] order by 列2)。必须有order by 子句 2.over子句与聚合开窗函数一起用,语法:over([partition by 列1])不能使用order by子句了。【先演示这个】 注:当over()子句与聚合函数一起使用时,也可以直接写count(*) over()不在over()子句中进行任何分区,表示把整个表分为一个区。 第1种使用方式 over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。 其参数:over(partition by columnname1 order by columnname2) 含义:按columname1指定的字段的值,对查询后的结果集进行分组再组内排序,形成结果集中的一个新列。若SQL语句最后有order by,则把最终的结果集再整体排序。 例如:employees表中,有两个部门的记录:department_id =10和20 SQL语句“select department_id ,salary,rank() over(partition
by department_id order by salary ) from Employees ”,就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是没有partition by部分,则是在整个公司内进行排名。
第2种使用方式 下面的示例对于查询返回的所有行,将 OVER 子句与聚合函数一起使用。
在这个示例中,使用 OVER 子句与使用子查询相比,可以更高效地派生聚合值。
USE AdventureWorks2012;
GO
SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS Total ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Avg" ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Count" ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Min" ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS "Max" FROM Sales.SalesOrderDetail WHERE SalesOrderID IN(43659,43664);
GO
0 0
- sql语句关键字over的作用及用法
- sql语句关键字over的作用及用法
- sql over的作用及用法
- sql over的作用及用法
- sql over的作用及用法
- SQL 语句及关键字的用法
- SQL 语句及关键字的用法
- sql语句中几个关键字的意思及用法
- sql语句row_number() OVER用法
- sql Over的用法
- SQL 中HAVING的用法 及 OVER 的用法
- sql 关键字及作用
- 关键字this的用法及作用
- SQL 中常用的关键字及作用
- over语句的使用--sql
- SQL中distinct和row_number() over() 的区别及用法
- SQL中distinct 和 row_number() over() 的区别及用法
- SQL中distinct 和 row_number() over() 的区别及用法
- Channel配置参数
- php+redis 实现用户注册等操作
- oracle数据库开发笔记
- 关于Storyboard拖拽的ViewController返回上一层时有对象被释放
- gson解析注意事项
- sql语句关键字over的作用及用法
- json转树状结构(js)
- Json序列化失败
- java策略模式
- (译)理解 LSTM 网络 (Understanding LSTM Networks by colah)
- sql获取表中字段属性的查询语句
- RN实战阶段小结-小项目:书籍列表和展示
- JAVA知识点-----与C项目进行网络通讯------数据加密篇
- 机器学习——决策树算法原理及案例