<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試時,你應該知道的5個 SQL 窗口函數(shù)

          共 2138字,需瀏覽 5分鐘

           ·

          2022-01-21 01:40

          關(guān)注"Python學習與數(shù)據(jù)挖掘",

          設(shè)為“置頂或星標”,第一時間送達干貨

          資料專欄

          李航老師《統(tǒng)計學習方法(第二版)》課件&代碼

          【視頻+PPT】李宏毅老師機器學習40講

          SQL是數(shù)據(jù)世界中的通用語言,是數(shù)據(jù)從業(yè)人員最重要的技能之一。許多數(shù)據(jù)探索、數(shù)據(jù)操作、管道開發(fā)和儀表板創(chuàng)建都可以通過 SQL 完成的。

          偉大的數(shù)據(jù)科學家與優(yōu)秀的數(shù)據(jù)科學家的區(qū)別在于,偉大的數(shù)據(jù)科學家可以盡可能多地利用 SQL 的功能來處理數(shù)據(jù)。要充分利用 SQL 提供的所有功能,很大一部分是要知道如何使用窗口函數(shù)。

          1、帶有 LEAD() 和 LAG() 的增量

          LEAD()和 LAG()主要用于將某個時間段與給定指標的前一個時間段進行比較,比如:

          • 獲得每年銷售額與上一年銷售額之間的差值
          • 獲得每月注冊/轉(zhuǎn)換/網(wǎng)站訪問次數(shù)的增量
          • 按月比較用戶流失率

          以如何查詢成本的每月百分比變化為例

          with?monthly_costs?as?(
          ????SELECT
          ????????date
          ??????,?monthlycosts
          ??????,?LEAD(monthlycosts)?OVER?(ORDER?BY?date)?as
          ????????previousCosts
          ????FROM
          ????????costs
          )SELECT
          ????date
          ??,?(monthlycosts?-?previousCosts)?/?previousCosts?*?100?AS
          ????costPercentChange
          FROM?monthly_costs

          2、使用 SUM() 或 COUNT() 求和

          以 SUM() 或 COUNT() 開頭的窗口函數(shù)簡單地計算運行總計。當你想要顯示特定指標隨時間的增長時,這是一個必備的工具,它在以下情況下很有用:

          • 獲得一段時間內(nèi)的總收入和成本
          • 獲取每個用戶在應用程序上花費的總時間
          • 獲取一段時間內(nèi)的總轉(zhuǎn)化次數(shù)

          以如何包含每月費用的累積總和列:

          SELECT
          ????date
          ??,?monthlycosts
          ??,?SUM(monthlycosts)?OVER?(ORDER?BY?date)?as?cumCosts
          FROM
          ????cost_table

          3、使用 AVG() 的移動平均線

          AVG() 在窗口函數(shù)中非常強大,因為它可以計算一段時間內(nèi)的移動平均值。移動平均線是一種簡單但有效的短期預測值的方法。比如

          • 獲取每周銷售額的總體趨勢
          • 獲取每周轉(zhuǎn)換或網(wǎng)站訪問的總體趨勢。例子:

          以查詢是獲取轉(zhuǎn)化次數(shù)的 10 天移動平均值的示例

          SELECT
          ????Date
          ??,?dailyConversions
          ??,?AVG(dailyConversions)?OVER?(ORDER?BY?Date?ROWS?10?PRECEDING)?AS
          ????10_dayMovingAverage
          FROM
          ????conversions

          4、ROW_NUMBER()

          當想要獲取第一條或最后一條記錄時,ROW_NUMBER() 特別有用。

          如何使用 ROW_NUMBER() 獲取每個用戶訪問的第一個日期。

          with?numbered_visits?as?(
          ????SELECT
          ????????memberId
          ??????,?visitDate
          ??????,?ROW_NUMBER()?OVER?(PARTITION?BY?customerId?ORDER?BY
          ????????purchaseDate)?as?rowNumber
          ????FROM
          ????????gym_visits
          )SELECT
          ????*
          FROM
          ????numbered_visits
          WHERE?
          ????rowNumber?=?1

          5、使用 DENSE_RANK() 進行記錄排名

          DENSE_RANK() 與 ROW_NUMBER() 類似,只是它為相等的值返回相同的排名。例如:

          • 想拉出本周觀看次數(shù)最多的 10 部 Netflix 節(jié)目
          • 想根據(jù)花費的金額獲得前 100 名用戶
          • 想查看 1000 個最不活躍用戶的行為 例子:

          如果你想按總銷售額對頂級客戶進行排名,則 DENSE_RANK() 將是一個合適的函數(shù)

          SELECT
          ????customerId
          ??,?totalSales
          ??,?DENSE_RANK()?OVER?(ORDER?BY?totalSales?DESC)?as?rank
          FROM
          ????customers

          總結(jié)

          如果你對這5個概念了如指掌,那么當涉及到大多數(shù)SQL窗口函數(shù)問題時,你會做得很好。有所收獲,點贊支持。

          長按或掃描下方二維碼,后臺回復:加群,即可申請入群。一定要備注:來源+研究方向+學校/公司,否則不拉入群中,見諒!

          長按三秒,進入后臺


          推薦閱讀

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  淫荡留学生激情 | 欧美+国产+无码+麻豆 | 黄色视频www | 91x色| 色呦哟无码精品一区二区三区 |