1. 程式人生 > >sql中開窗函式簡單說明

sql中開窗函式簡單說明

開窗函式與聚合函式一樣,也是對行集組進行聚合計算,但是它不像普通聚合函式那樣每組只返回一個值,開窗函式可以為每組返回多個值,因為開窗函式所執行聚合計算的行集組是視窗。
語法:主要是over( PARTITION BY (根據某條件分組,形成一個小組)….ORDER BY(再組內進行排序) …. )
常用函式:(最常用的應該是1.2.3 的排序)
1、row_number() over(partition by … order by …)
增加一列,類似與增加偽列
2、rank() over(partition by … order by …)
3、dense_rank() over(partition by … order by …)
rank(): 跳躍排序,如果有兩個第一級時,接下來就是第三級。
dense_rank(): 連續排序,如果有兩個第一級時,接下來仍然是第二級。
4、count() over(partition by … order by …)
5、max() over(partition by … order by …)
6、min() over(partition by … order by …)
7、sum() over(partition by … order by …)
8、avg() over(partition by … order by …)
9、first_value() over(partition by … order by …)
10、last_value() over(partition by … order by …)
與函式的功能一致,只是是開窗函式
11、lag() over(partition by … order by …)
12、lead() over(partition by … order by …)
lag 和lead 可以 獲取結果集中,按一定排序所排列的當前行的上下相鄰若干offset 的某個行的某個列(不用結果集的自關聯);
lag ,lead 分別是向前,向後;
lag 和lead 有三個引數,第一個引數是列名,第二個引數是偏移的offset,第三個引數是 超出記錄視窗時的預設值)

相關推薦

sql開窗函式簡單說明

開窗函式與聚合函式一樣,也是對行集組進行聚合計算,但是它不像普通聚合函式那樣每組只返回一個值,開窗函式可以為每組返回多個值,因為開窗函式所執行聚合計算的行集組是視窗。 語法:主要是over( PARTITION BY (根據某條件分組,形成一個小組)….OR

SQL幾個簡單函式:LEFT JOIN;COUNT遇上GROUP BY

概要:函式LEFT JOIN與COUNT/GROUP BY的使用,以及為AND篩選限制條件的合適位置 SQL: SELECT DISTINCT att.attributes_templates_id,att.attributes_templates_name,COUN

SQL/HQL開窗函式詳細講解

一、前言 本文將從一道面試題入手,以一種易人理解的方式,將對SQL視窗函式部分進行詳細講解。 開窗函式,顧名思義,就是從現有的表上,額外多加一列出來展示,這也是從視覺上來講最直觀的體驗。 二、思維拓展 注:MYSQL中無開窗函式 開窗函式分為兩大類: 1、分組

SQL的SELECT 簡單查詢語句總結

clas 識別 結果集 -i ear get int 一個 lec --scott用戶不能使用,使用system登錄--修改用戶scott賬戶解鎖ALTER USER SCOTT ACCOUNT UNLOCK;--重新設置密碼identified被識別的alter user

SQL排序函式的用法

SQL中的排序函式有三:1、row_number() over();2、rank() over();3、dense_rank() over(),具體用法如下: 1.row_number() over(partition by 列名 order by 列名 [desc]) 其中,partition by 是分組

資料庫:SQL函式

目錄 一、單行函式 1.特點:返回結果是1條記錄 2.分類:數學函式、字串函式、日期函式 2.1 數學函式 select PI();#圓周率 select CE

SQLGroup by 簡單理解

在sql語言中,我們常常想將查詢出來的資料進行分組,這時我們就用到了Group by 函式。 eg: 有如下表: student 序號 學號 姓名 性別 1 201

SQL基本函式的講解

SQL 擁有很多可用於計數和計算的內建函式。 函式的語法 內建 SQL 函式的語法是:SELECT function(列) FROM 表 函式的型別 在 SQL 中,基本的函式型別和種類有若干種。函式的基本型別是: Aggregate 函式 Scalar 函式

SQL decode()函式簡介

今天看別人的SQL時看這裡面還有decode()函式,以前從來沒接觸到,上網查了一下,還挺好用的一個函式,寫下來希望對朋友們有幫助哈!   decode()函式簡介: 主要作用:將查詢結果翻譯成其他值(即以其他形式表現出來,以下舉例說明); 使用方法: Selec

SQLstr函式的用法

SQL SERVER 中str函式的用法 STR函式主要用於返回與指定數值表示式對應的字元。 語法 STR(nExpression [, nLength [, nDecimalPlaces]]) 引數 nExpression STR( ) 要計算的數值表示式。 nLengt

SQLobject_id函式的用法

SQL中object_id函式的用法 語法:OBJECT_ID ( '[ database_name . [ schema_name ] . | schema_name . ] object_name' [ ,'object_type' ] ) 引數: ' object_n

SQLround()函式的使用

ROUND() 函式 ROUND 函式用於把數值欄位舍入為指定的小數位數。 SQL ROUND() 語法 SELECT ROUND(column_name,decimals) FROM table_name 引數 描述

SQLif函式使用技巧

語法:IF(expr1,expr2,expr3) 其中,expr1是判斷條件,expr2和expr3是符合expr1的自定義的返回結果。 用處:當從資料庫中查詢出來的結果需要轉換成中文或是其他自定義的

sqlcount函式和distinct函式的配合使用

使用者名稱    商品    數量 A        甲      1 B        乙      2 C        丙      2 B        甲      1 A        丙      2 C        丙      1 寫sql語句 要求查出

【C++】類成員函式後面接 const

const 表示對類中成員函式屬性的宣告; 表示不會修改類中的資料成員; 在編寫const成員函式時,若不慎修改了資料成員,或者呼叫了其他非const成員函式,編譯器將指出錯誤; 以下程式中,類stack的成員函式GetCount僅用於計數,從邏輯上講GetCount應

Sql server 開窗函式over()的語法

用法一:與ROW_NUMBER()函式結合用,給結果進行排序編號,如圖: 程式碼如下: SELECT ROW_NUMBER() over(order by RequiredDate) num ,* from [Northwind].[dbo]

**matlabfprintf函式簡單用法**

1、fprintf函式:將資料按指定格式寫入到文字檔案中。 2、用法說明: fprintf(fid, format, variables); 按指定的格式將變數的值輸出到螢幕或指定檔案; fid為檔案控

PL/SQLLpad函式和Rpad函式的用法

這兩個函式主要用來實現一些對齊,如下圖的一個訂單介面 pad的中文意思是填充,所以說顧名思義 Lpad->Left pad ->左填充 Rpad->Right pad ->右填充 這兩個函式分別都接受三個引數,以L

SQLreplace()函式的用法

replace()函式表示將用一個字串替換字串中的所出現的特定內容。語法為:replace(欄位1,欄位2,欄位3),意思為欄位3將會替換欄位1裡與欄位2相同的內容  列如: table1 state 20 select replace(state,'2','1') fr

sql優化總結 / sqldecode(...)函式的用法

相當於if語句 decode函式比較1個引數時 SELECT ID,DECODE(inParam,'beComparedParam','值1' ,'值2') name FROM bank #如果第一個引數inParam=='beComparedParam',則select得到的name顯示為值1, #如果第