<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HIVE基礎(20):Hive函數(9) over 窗口函數

      hive窗口函數語法

      在前言中我們已經說了avg()、sum()、max()、min()是分析函數,而over()才是窗口函數,下面我們來看看over()窗口函數的語法結構、及常與over()一起使用的分析函數

      • over()窗口函數的語法結構
      • 常與over()一起使用的分析函數
      • 窗口函數總結

      1、over()窗口函數的語法結構

      分析函數 over(partition by 列名 order by 列名 rows between 開始位置 and 結束位置)

      over()函數中包括三個函數:包括分區partition by 列名、排序order by 列名、指定窗口范圍rows between 開始位置 and 結束位置。我們在使用over()窗口函數時,over()函數中的這三個函數可組合使用也可以不使用。

      over()函數中如果不使用這三個函數,窗口大小是針對查詢產生的所有數據,如果指定了分區,窗口大小是針對每個分區的數據。


      1.over() 默認此時每一行的窗口都是所有的行

      select *,count(1) over() from business;

       

       

      2.over(order by orderdate)

      orderdate=1的窗口只有一行,orderdate=2的窗口包括orderdate=2017-01-01,orderdate=2017-01-02

      select *,count(1) over(order by orderdate) from business;

      3.over(partition by name)每一行根據 name來區分窗口

      select *,sum(cost) over(partition by name) from business;

      4.over(partition by name order by id) 每一行根據 name來區分窗口,再根據order by 取具體的范圍

      select *,sum(cost) over(partition by name order by orderdate) from business;

       

       

      6 over()函數中的三個函數講解

      order by
      order by是排序的意思,是該窗口中的


      A、partition by
      partition by可理解為group by 分組。over(partition by 列名)搭配分析函數時,分析函數按照每一組每一組的數據進行計算的。

      B、rows between 開始位置 and 結束位置
      是指定窗口范圍,比如第一行到當前行。而這個范圍是隨著數據變化的。over(rows between 開始位置 and 結束位置)搭配分析函數時,分析函數按照這個范圍進行計算的。

      窗口范圍說明:
      我們常使用的窗口范圍是ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW(表示從起點到當前行),常用該窗口來計算累加。

      PRECEDING:往前

      FOLLOWING:往后
      CURRENT ROW:當前行
      UNBOUNDED:起點(一般結合PRECEDING,FOLLOWING使用)
      UNBOUNDED PRECEDING 表示該窗口最前面的行(起點)
      UNBOUNDED FOLLOWING:表示該窗口最后面的行(終點)
      比如說:
      ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW(表示從起點到當前行)
      ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING(表示往前2行到往后1行)
      ROWS BETWEEN 2 PRECEDING AND 1 CURRENT ROW(表示往前2行到當前行)
      ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING(表示當前行到終點)

      2、常與over()一起使用的分析函數:

      2.1  聚合類

      avg()、sum()、max()、min()

      2.2  排名類

      row_number()按照值排序時產生一個自增編號,不會重復(如:1、2、3、4、5、6)
      rank() 按照值排序時產生一個自增編號,值相等時會重復,會產生空位(如:1、2、3、3、3、6)
      dense_rank() 按照值排序時產生一個自增編號,值相等時會重復,不會產生空位(如:1、2、3、3、3、4)

      2.3  其他類

      lag(列名,往前的行數,[行數為null時的默認值,不指定為null]),可以計算用戶上次購買時間,或者用戶下次購買時間。或者上次登錄時間和下次登錄時間
      lead(列名,往后的行數,[行數為null時的默認值,不指定為null])
      ntile(n) 把有序分區中的行分發到指定數據的組中,各個組有編號,編號從1開始,對于每一行,ntile返回此行所屬的組的編號

      3、窗口函數總結:

      其實窗口函數邏輯比較繞,我們可以把窗口理解為對表中的數據進行分組,排序等計算。要真正的理解HIVE窗口函數,還是要結合練習題才行。下面我們開始HIVE窗口函數的練習吧!

       

      posted @ 2021-08-19 22:13  秋華  閱讀(1330)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 又粗又硬又黄a级毛片| 国产麻豆成人精品av| 国产成人精品一区二区秒拍1o | 亚洲精品一区二区美女| 青青草无码免费一二三区| 亚洲av日韩av一区久久| 884aa四虎影成人精品| 日韩精品亚洲 国产| 国产对白老熟女正在播放| av中文字幕一区人妻| 久久99热只有频精品8| 亚洲精品成人区在线观看| 久久国内精品一区二区三区| 麻豆国产传媒精品视频| 亚洲人成网站在线在线观看| 日本不卡码一区二区三区| 无码日韩av一区二区三区| 庆阳市| 日韩乱码视频一区二区三区| 日本大片免A费观看视频三区| 国产人成视频在线观看| 亚洲成av人片天堂网无码| 国产精品免费中文字幕| 乱子伦视频在线看| 精品日本乱一区二区三区| av中文字幕国产精品| 亚洲国产天堂一区二区三区| 日韩在线不卡免费视频一区| 丰满少妇内射一区| 伊人精品久久久大香线蕉| 成人网站av亚洲国产| 加勒比中文字幕无码一区| 莱阳市| 亚洲成av人片无码迅雷下载 | 九色精品国产亚洲av麻豆一| 成人无码潮喷在线观看| 亚洲高清av一区二区| 久久精品国产亚洲av忘忧草18| 性XXXX视频播放免费直播| 国产不卡一区不卡二区| 宜兰市|