欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GBase與梧桐數(shù)據(jù)庫窗口函數(shù)使用的方法比較

 更新時間:2024年11月20日 11:15:41   作者:好好學習_ah  
這篇文章主要給大家介紹了關于GBase與梧桐數(shù)據(jù)庫窗口函數(shù)使用的比較,文中包括排序類和統(tǒng)計類窗口函數(shù)的定義、語法和示例,窗口函數(shù)可以進行復雜的數(shù)據(jù)分析,提高查詢性能,并適應不同的數(shù)據(jù)分析需求,需要的朋友可以參考下

一、前言

窗口函數(shù)可以進行復雜的數(shù)據(jù)分析,使數(shù)據(jù)處理變得更加靈活和強大。通過這些函數(shù),用戶可以在不同的窗口范圍內對數(shù)據(jù)進行匯總、平均、計數(shù)等操作,以下介紹一些常用的窗口函數(shù)分別在梧桐數(shù)據(jù)庫和GBase數(shù)據(jù)庫中的使用。

二、創(chuàng)建測試用例

為更好的體現(xiàn)函數(shù)的使用,現(xiàn)創(chuàng)建一個測試表來驗證各類窗口函數(shù)的使用及返回結果;

1、建表

-- gbase數(shù)據(jù)庫建表create table rows_test 
(
user_id varchar(10),    --用戶idprod_id varchar(10),    --產(chǎn)品idsale_cnt decimal(10,0)  --銷售數(shù)量);-- 梧桐數(shù)據(jù)庫建表create table rows_test 
(
user_id character varying(10),  --用戶idprod_id character varying(10),  --產(chǎn)品idsale_cnt numeric(10,0)          --銷售數(shù)量);

2、測試用例

insert into rows_test values('AAA','pd_1',2),
('AAA','pd_2',5),
('BBB','pd_1',1),
('BBB','pd_2',2),
('BBB','pd_3',3),
('CCC','pd_1',3),
('CCC','pd_3',4),
('DDD','pd_1',2),
('DDD','pd_3',4);--梧桐數(shù)據(jù)庫與GBase數(shù)據(jù)插入語法相同

三、排序類窗口函數(shù)

1、簡介

排序類窗口函數(shù)常用的有 row_number()、rank()、dense_rank();

  • row_number():為每個行分配一個唯一的連續(xù)整數(shù),從1開始。它不會為任何行跳過數(shù)字,即使有并列(ties)也不會跳過;

  • rank() :在遇到并列時會為相同的值分配相同的排名,并且后續(xù)的排名會跳過已使用的數(shù)字。例如,如果有兩行并列第一,它們的排名都是1,下一行的排名會是3,而不是2;

  • dense_rank():在處理并列時會為相同的值分配相同的排名,并且下一個排名會緊接著上一個排名,即使有并列也不會跳過數(shù)字;

2、函數(shù)使用

以產(chǎn)品 ‘prod_1’ 的銷售數(shù)量對用戶進行排名,分別使用上述函數(shù)實現(xiàn):

梧桐數(shù)據(jù)庫與GBase數(shù)據(jù)庫語法相同,不做重復贅述

select *,row_number() over(partition by prod_id order by sale_cnt desc) row_id 
from rows_test ;select *,rank() over(partition by prod_id order by sale_cnt desc) rank_id 
from rows_test ;select *,dense_rank() over(partition by prod_id order by sale_cnt desc) dense_rank_id 
from rows_test ;

梧桐數(shù)據(jù)庫執(zhí)行結果

GBase 執(zhí)行結果

  • over 子句用來定義窗口的分區(qū)及排序方式

  • partition by 定義排序分區(qū)

  • order by 定義排序方式

如上結果:

row_number() 會為每一行賦予一個整數(shù)不會跳過,當排序條件相同時,會隨機一行排序;

rank()在排序條件相同時會賦予相同的值,下一個值會跳過;

dense_rank()在排序條件相同時會賦予相同的值,下一個值會接上一個;

四、統(tǒng)計類窗口函數(shù)

統(tǒng)計類窗口函數(shù)常用的有 count()、sum()、avg()、max()、min() 等,其效果與聚合函數(shù)相同,具體如下:

  • sum(column_1) :對 column_1 字段求和,字段必須是整型或浮點型;

  • count(column_1):對 column_1 字段計數(shù);

  • avg(column_1):對 column_1 字段求平均值,字段必須是整型或浮點型;

  • max(column_1):對 column_1 字段求最大值,字段是整型或浮點型,也可是字符串;

  • min(column_1):對 column_1 字段求最小值,字段是整型或浮點型,也可是字符串;

示例:

select *,sum(sale_cnt) over (partition by user_id),count(prod_id) over (partition by user_id),avg(sale_cnt) over (partition by user_id),max(sale_cnt) over (partition by user_id),min(sale_cnt) over (partition by user_id)from rows_test

示例解釋:

  • sum(sale_cnt) over (partition by user_id)以用戶id為分區(qū)計算銷量的和,返回值為用戶所有產(chǎn)品銷量的和;

  • count(prod_id) over (partition by user_id)以用戶id為分區(qū)計算銷售產(chǎn)品數(shù)量,返回值為用戶銷售的產(chǎn)品個數(shù);

  • avg(sale_cnt) over (partition by user_id)以用戶id為分區(qū)計算銷售產(chǎn)品銷量的平均值,返回值為用戶平均每個產(chǎn)品的銷量;

  • max(sale_cnt) over (partition by user_id)以用戶id為分區(qū)計算產(chǎn)品最大銷量,返回值為用戶銷售最多的產(chǎn)品個數(shù);

  • min(sale_cnt) over (partition by user_id)以用戶id為分區(qū)計算銷售產(chǎn)品數(shù)量,返回值為用戶銷售最少的產(chǎn)品個數(shù);

梧桐數(shù)據(jù)庫測試結果如圖:

五、總結

對比梧桐數(shù)據(jù)庫與GBase數(shù)據(jù)窗口函數(shù)的語法及使用基本相同,其避免了使用子查詢或連接,可以顯著提高查詢性能;提供了對數(shù)據(jù)進行靈活分析的能力,可以輕松適應不同的數(shù)據(jù)分析需求,增強了數(shù)據(jù)的分析能力;

窗口函數(shù)的應用場景也非常廣泛,可以用于各種數(shù)據(jù)分析和處理任務;例如通過排序類函數(shù)可以計算套餐銷量top;地市、區(qū)縣業(yè)務發(fā)展情況的top等;匯總、累計類函數(shù)可以統(tǒng)計用戶出賬等收入分析。

到此這篇關于GBase與梧桐數(shù)據(jù)庫窗口函數(shù)使用的方法比較的文章就介紹到這了,更多相關GBase與梧桐數(shù)據(jù)庫窗口函數(shù)使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 手動部署OceanBase三副本集群方式

    手動部署OceanBase三副本集群方式

    這篇文章主要介紹了手動部署OceanBase三副本集群方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 使用navicat連接虛擬機的數(shù)據(jù)庫進行操作詳細流程

    使用navicat連接虛擬機的數(shù)據(jù)庫進行操作詳細流程

    這篇文章主要給大家介紹了關于使用navicat連接虛擬機的數(shù)據(jù)庫進行操作詳細流程,使用Navicat連接虛擬機的數(shù)據(jù)庫,需要確保虛擬機和數(shù)據(jù)庫運行狀態(tài),獲取數(shù)據(jù)庫信息,包括類型、IP地址、端口號、用戶名和密碼,需要的朋友可以參考下
    2024-11-11
  • 達夢數(shù)據(jù)庫DISQL連接數(shù)據(jù)庫與執(zhí)行SQL、腳本的方法圖文詳解

    達夢數(shù)據(jù)庫DISQL連接數(shù)據(jù)庫與執(zhí)行SQL、腳本的方法圖文詳解

    DIsql是DM數(shù)據(jù)庫的一個命令行客戶端工具,跟Oracle數(shù)據(jù)庫的sqlplus工具一樣,用來與?DM?數(shù)據(jù)庫服務器進行交互,這篇文章主要給大家介紹了關于達夢數(shù)據(jù)庫DISQL連接數(shù)據(jù)庫與執(zhí)行SQL、腳本的方法,需要的朋友可以參考下
    2024-09-09
  • 詳解Navicat Premium 15 無限試用腳本的方法

    詳解Navicat Premium 15 無限試用腳本的方法

    這篇文章主要介紹了Navicat Premium 15 無限試用腳本的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-11-11
  • 數(shù)據(jù)庫設計的完整性約束表現(xiàn)在哪些方面

    數(shù)據(jù)庫設計的完整性約束表現(xiàn)在哪些方面

    數(shù)據(jù)完整性是指數(shù)據(jù)的正確性、完備性和一致性,是衡量數(shù)據(jù)庫質量好壞的規(guī)范。數(shù)據(jù)庫完整性由各式各樣的完整性約束來確保,因而可以說數(shù)據(jù)庫完整性規(guī)劃即是數(shù)據(jù)庫完整性約束的規(guī)劃。那么,數(shù)據(jù)庫設計的完整性約束表現(xiàn)哪些方面?
    2015-10-10
  • 舉例簡單介紹PostgreSQL中的數(shù)組

    舉例簡單介紹PostgreSQL中的數(shù)組

    這篇文章主要介紹了舉例簡單介紹PostgreSQL中的數(shù)組,PostgreSQL是一個高性能關系型數(shù)據(jù)庫,學習PostgreSQL將成為趨勢,需要的朋友可以參考下
    2015-04-04
  • 5分鐘快速了解數(shù)據(jù)庫死鎖產(chǎn)生的場景和解決方法

    5分鐘快速了解數(shù)據(jù)庫死鎖產(chǎn)生的場景和解決方法

    這篇文章主要給大家介紹了關于如何通過5分鐘快速理解數(shù)據(jù)庫死鎖的相關資料,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • 聊聊Navicat統(tǒng)計的行數(shù)竟然和表實際行數(shù)不一致的問題

    聊聊Navicat統(tǒng)計的行數(shù)竟然和表實際行數(shù)不一致的問題

    Navicat作為數(shù)據(jù)庫管理工具,在業(yè)界廣受歡迎,這篇文章主要介紹了Navicat統(tǒng)計的行數(shù)竟然和表實際行數(shù)不一致的問題,需要的朋友可以參考下
    2021-12-12
  • Navicat快速導入和導出sql文件的方法

    Navicat快速導入和導出sql文件的方法

    Navicat是MySQL非常好用的可視化管理工具,功能非常強大,能滿足我們日常數(shù)據(jù)庫開發(fā)的所有需求。今天教大家如何導入和導出SQL文件,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • IndexedDB瀏覽器內建數(shù)據(jù)庫并行更新問題詳解

    IndexedDB瀏覽器內建數(shù)據(jù)庫并行更新問題詳解

    這篇文章主要為大家介紹了IndexedDB瀏覽器內建數(shù)據(jù)庫并行更新問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論