<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 9.21\. 窗口函數 _窗口函數_提供跨行相關的當前查詢行集執行計算的能力。 參閱[Section 3.5](#calibre_link-1330)獲取這個特性的介紹。 [Table 9-48](#calibre_link-2162)列出了內建的窗口函數。 注意_必須_使用窗口函數的語法調用這些函數;一個`OVER`子句是必需的。 除了這些函數外,任何內建的或用戶定義的聚集函數都可以作為窗口函數(見 [Section 9.20](#calibre_link-1641)關于內建聚集函數的列表)。 僅當調用跟著`OVER`子句的聚集函數,作為窗口函數;否則它們作為常規的聚合。 **Table 9-48\. 通用窗口函數** | 函數 | 返回類型 | 描述 | | --- | --- | --- | | `row_number()` | `bigint` | 在其分區中的當前行號,從1計 | | `rank()` | `bigint` | 有間隔的當前行排名;與它的第一個相同行的`row_number`相同 | | `dense_rank()` | `bigint` | 沒有間隔的當前行排名;這個函數計數對等組。 | | `percent_rank()` | `double precision` | 當前行的相對排名: (`rank` - 1) / (總行數 - 1) | | `cume_dist()` | `double precision` | 當前行的相對排名:(前面的行數或與當前行相同的行數)/(總行數) | | `ntile(`_num_buckets_` `integer`)` | `integer` | 從1到參數值的整數范圍,盡可能相等的劃分分區。 | | `lag(`_value_` `any` [, `_offset_` `integer` [, `_default_` `any` ]])` | `類型同` `_value_` | 計算分區當前行的前`_offset_` 行,返回`_value_` 。如果沒有這樣的行, 返回`_default_`替代。 `_offset_`和`_default_` 都是當前行計算的結果。如果忽略了,則`_offset_` 默認是1,`_default_`默認是 null。 | | `lead(`_value_` `any` [, `_offset_` `integer` [, `_default_` `any` ]])` | `類型同``_value_` | 計算分區當前行的后`_offset_`行, 返回`_value_`。如果沒有這樣的行, 返回`_default_`替代。 `_offset_`和`_default_` 都是當前行計算的結果。如果忽略了,則`_offset_` 默認是1,`_default_`默認是 null。 | | `first_value(`_value_` `any`)` | `類型同``_value_` | 返回窗口第一行的計算`_value_`值。 | | `last_value(`_value_` `any`)` | `類型同``_value_` | 返回窗口最后一行的計算`_value_`值。 | | `nth_value(`_value_` `any`, `_nth_` `integer`)` | `類型同``_value_` | 返回窗口第`_nth_`行的計算 `_value_`值(行從1計數);沒有這樣的行則返回 null。 | 在[Table 9-48](#calibre_link-2162)列出的所有函數, 依賴于與窗口定義有關的`ORDER BY`子句指定的排序。 _同行_是說在`ORDER BY`排序時不唯一的行。 定義的這四個排名函數,對于任何兩個同行的答案相同。 注意`first_value`,`last_value`,和`nth_value` 只考慮"window frame"內的行,其默認情況下,包含從分區的開始行直到當前行的最后同行。 像`last_value`和`nth_value`有時會給出沒有用的結果。 您可以通過向`OVER`子句添加合適的框架規范(`RANGE`或者`ROWS`) 來重新定義該框架。參閱[Section 4.2.8](#calibre_link-1331)獲取框架定義的信息。 當一個聚集函數作為窗口函數使用時,將聚合超過當前行的窗框內的行。 一個使用`ORDER BY`和默認窗框定義處理"運行時求和"類型的行為的聚集函數, 可能不是想要的結果。為了獲取超過整個分區聚合,忽略`ORDER BY` 或者使用`ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING`。 其它窗框規格可以用來獲取其它的效果。 > **Note:** SQL 標準為`lead`, `lag`, `first_value`, `last_value`, 和`nth_value`定義了一個`RESPECT NULLS`或`IGNORE NULLS`選項。 這個在PostgreSQL沒有實現:行為總是與標準默認相同,即`RESPECT NULLS`。 同樣用于`nth_value`的標準`FROM FIRST`或`FROM LAST` 選項也沒有實現:只支持默認`FROM FIRST`行為。 (您可以通過`ORDER BY`排序取反獲取到`FROM LAST`的結果。)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看