`
guochunyang2004
  • 浏览: 80284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

sql语句关键字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

分享到:
评论

相关推荐

    unix下的INFORMIX SQL语句的使用

    下面我们将详细探讨INFORMIX数据库中的嵌入式SQL语句的独特之处及其使用方法。 #### 一、嵌入式SQL语句概述 嵌入式SQL语句允许程序员直接在高级语言程序中使用SQL命令,从而实现了高级语言程序与数据库之间的无缝...

    SQL语句优化数据库java

    - 在进行分页查询时,使用FETCH NEXT或ROW_NUMBER() OVER (ORDER BY...)等方法,替代传统的OFFSET/LIMIT。 - 考虑使用覆盖索引来提高性能,特别是当只需要返回少量列时。 11. **数据一致性保障**: - 了解并正确...

    数据库真分页SQL语句

    例如,在SQL Server中,获取第10页,每页显示10条记录的真分页SQL语句可能如下: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY SomeColumn) AS RowNum FROM YourTable ) AS TmpTable WHERE...

    c#\book\实现分页的sql语句

    在SQL Server中,常用的分页方法有两种:一种是使用`OFFSET`和`FETCH`关键字;另一种是使用`ROW_NUMBER()`窗口函数配合`WHERE`子句。本次讨论的案例采用了第二种方法,即使用`ROW_NUMBER()`函数。 ### 使用ROW_...

    通用的存储过程sql分页查询语句

    存储过程是一组预先编译好的SQL语句,存储在数据库服务器中,可以按需调用执行。它的优点包括提高性能、减少网络流量、增强安全性以及简化复杂的操作。在分页查询场景下,创建一个存储过程可以有效地封装分页逻辑,...

    数据库分页SQL语句.docx

    在不同的数据库系统中,实现分页查询的SQL语句会有所不同。以下将详细介绍SQL Server、Oracle、MySQL以及DB2这四种数据库系统中的分页查询方法。 1. SQL Server: 在SQL Server中,我们可以使用`TOP`关键字来实现...

    aspnetpager控件与三层sql语句的分页

    2. **LIMIT** 和 **OFFSET** 方法:在MySQL等支持这些关键字的数据库中,可以使用LIMIT来限制返回的记录数,OFFSET用来跳过前面的记录。 ```sql SELECT * FROM YourTable ORDER BY SomeColumn LIMIT Records...

    java笔记\Oracle里sql不能用limit的处理

    如果我们想要查询第11-20条记录,我们可以使用以下SQL语句: ```sql SELECT t_col1,t_col2 FROM t_table_name WHERE rownum > 10 and rownum ; ``` 二、使用Minus运算符实现分页查询 除了使用RowNum函数,我们...

    删除表中重复数据sql语句.docx

    本文将详细讲解如何使用SQL语句来查询和删除数据库表中的重复数据。 首先,我们要了解什么是重复数据。在数据库中,重复数据是指具有相同值的一个或多个字段的数据行。例如,如果一个`people`表中有多个人具有相同...

    SQL Server 数据库实用SQL语句

    在SQL Server数据库中,了解和熟练运用SQL语句是管理和操作数据的关键。下面将详细解析提供的实用...以上就是SQL Server中涉及的一些实用SQL语句及其背后的原理和用法,掌握这些技巧能更高效地进行数据库操作和管理。

    Sql server 通用分页方法

    5. **执行动态SQL语句**:最后,使用`EXEC`命令执行构建好的动态SQL语句。 这种方法的优点在于其灵活性和兼容性,可以在较旧的SQL Server版本上实现分页功能。然而,由于使用了复杂的嵌套查询,性能可能不是最优,...

    SQL语句中含有乘号报错的处理办法

    总结来说,当SQL语句中需要进行乘法运算时,应当将计算部分移出SQL字符串,或者使用参数化查询、子查询等方法,以避免与SQL的通配符关键字冲突。同时,了解并正确应用SQL的语法和运算规则也是确保代码正确执行的关键...

    SQL分页语句的三种方案

    此方法的效率通常优于方案一,但仍然需要动态构造SQL语句。 ### 方案二倒序 对于需要按降序排列的数据,我们可以稍微修改上面的方案二,如下所示: ```sql SELECT TOP 页大小 * FROM table1 WHERE ID ( SELECT ...

    Mysql和SQLserver区别.pdf

    该文档比较了两种数据库的很多细节特征,包括数据类型、SQL语句的语法、函数、操作、数据操作语言(DML)命令等等。接下来,我将根据文件内容,详细介绍Mysql和SQLserver之间的一些关键区别。 首先,MySQL是一种...

    SQL 重复函数 2005

    - **组合使用**:`DISTINCT`可以与其他SQL关键字如`GROUP BY`、`HAVING`等结合使用,实现更复杂的数据筛选和统计需求。 ```sql SELECT DISTINCT column1, SUM(column2) FROM table_name GROUP BY column1; ``` #...

    SQL引擎和兼容各种SQL语法协议的解析器源代码.zip

    词法分析(也叫扫描器或分词器)将SQL语句分解成一个个小的标记(tokens),如关键字、标识符、数字等。语法分析(也叫解析器或解析树生成器)则将这些标记按照SQL语法规则构建出抽象语法树(AST),为后续的优化和...

    java语言的分页查询功能(mysql和sql server)

    通过`Statement`或`PreparedStatement`对象执行SQL语句,并使用`ResultSet`对象获取结果。 2. 分页查询SQL构造:对于MySQL,分页查询SQL可能如下: ```sql SELECT * FROM table LIMIT offset, limit; ``` 对于...

    SQL数据库语句大全.docx

    **in的使用方法** - **语法**: `SELECT * FROM 表名称 WHERE 列名称 IN (值1, 值2, ...);` - **说明**: 查询列值属于指定集合的数据。 **两张关联表,删除主表中已经在副表中没有的信息** - **示例**: `DELETE FROM...

    SQL去重 清除冗余数据

    SQL去重清除冗余数据 SQL去重是指清除查询结果或者是数据库里不必要的相对某个字段的冗余数据。对于查询结果去重,可以...SQL去重是数据库中非常重要的一部分,正确地使用去重方法可以提高查询效率,减少数据冗余。

Global site tag (gtag.js) - Google Analytics