<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.20\. 聚集函數 _聚集函數_從一組輸入值里計算一個結果。 [Table 9-46](#calibre_link-1071)和[Table 9-47](#calibre_link-1537) 顯示了內建的聚集函數。聚集函數的特殊語法在[Section 4.2.7](#calibre_link-1070)里解釋。 請參考[Section 2.7](#calibre_link-1357)獲取額外的介紹性信息。 **Table 9-46\. 通用聚集函數** | 函數 | 參數類型 | 返回類型 | 描述 | | --- | --- | --- | --- | | `array_agg(`_expression_`)` | 任意 | 參數類型的數組 | 輸入值,包括空,連接到一個數組 | | `avg(`_expression_`)` | `smallint`, `int`, `bigint`, `real`, `double precision`, `numeric`, or `interval` | 對于任何整數類型輸入,結果都是`numeric`類型。 對于任何浮點輸入,結果都是`double precision`類型。 否則和輸入數據類型相同。 | 所有輸入值的均值(算術平均) | | `bit_and(`_expression_`)` | `smallint`, `int`, `bigint`, or `bit` | 和參數數據類型相同 | 所有非 NULL 輸入值的按位與(AND),如果全部輸入值皆為 NULL ,那么結果也為 NULL 。 | | `bit_or(`_expression_`)` | `smallint`, `int`, `bigint`, or `bit` | 和參數數據類型相同 | 所有非 NULL 輸入值的按位或(OR),如果全部輸入值皆為 NULL ,那么結果也為 NULL 。 | | `bool_and(`_expression_`)` | `bool` | `bool` | 如果所有輸入值都是真,則為真,否則為假。 | | `bool_or(`_expression_`)` | `bool` | `bool` | 如果至少有一個輸入值為真,則為真,否則為假。 | | `count(*)` | `bigint` | 輸入行數 | | `count(`_expression_`)` | 任意 | `bigint` | 計算所有輸入行中滿足`_expression_`不為 NULL 的行數。 | | `every(`_expression_`)` | `bool` | `bool` | 等效于`bool_and` | | `json_agg(`_record_`)` | `record` | `json` | 聚集記錄作為JSON對象數組 | | `max(`_expression_`)` | 任意數組、數值、字符串、日期/時間類型 | 和參數數據類型相同 | 有輸入行中`_expression_`的最大值 | | `min(`_expression_`)` | 任意數組、數值、字符串、日期/時間類型 | 和參數數據類型相同 | 所有輸入行中`_expression_`的最小值 | | `string_agg(`_expression_`, `_delimiter_`)` | (`text`, `text`) or (`bytea`, `bytea`) | 和參數數據類型相同 | 輸入值連接成為一個字符串,用分隔符分開 | | `sum(`_expression_`)` | `smallint`, `int`, `bigint`, `real`, `double precision`, `numeric`, or `interval` | 對于`smallint`或`int`輸入,輸出類型為`bigint`。 對于`bigint`輸入,輸出類型為`numeric`,對于浮點數輸入, 輸出類型為`double precision`。否則和輸入數據類型相同。 | 所有輸入行的`_expression_`總和。 | | `xmlagg(`_expression_`)` | `xml` | `xml` | 連接 XML 值 (也可以參閱 [Section 9.14.1.7](#calibre_link-1967)) | 請注意,除了`count`以外,這些函數在沒有輸入行時返回 NULL 。 尤其要指出的是`sum`函數在沒有輸入行時返回 NULL ,而不是零。 `array_agg`函數在沒有輸入行時返回null而不是空數組。 必要時可以用`coalesce`把 NULL 替換成零或空數組。 > **Note:** `bool_and`和`bool_or`布爾聚集對應標準的 SQL 聚集`every`和`any`或`some`。 對于`any`和`some`,標準語法里面似乎有些內置的歧義: > > ``` > SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...; > ``` > > 這里的`ANY`既可以被認為是引出一個子查詢, 也可以被認為是一個聚集(如果子查詢返回布爾值的1行的話)。因此標準的名字無法用于這些聚集。 > **Note:** 習慣了其它 SQL 數據庫管理系統的用戶可能被用于全表計算的`count` 的性能(之慢)驚住了。一個類似下面這樣的查詢: > > ``` > SELECT count(*) FROM sometable; > ``` > > 將需要努力與表的大小成正比:PostgreSQL 將需要掃面整個表或包含表中所有行的完整的索引。 聚集函數`array_agg`,`json_agg`,`string_agg` 和`xmlagg`,以及類似用戶定義的聚集函數,根據輸入值的順序產生意義不同的結果值。 這個順序默認沒有指定,但是可以通過在聚集函數調用時,寫一個`ORDER BY`子句來控制, 就像[Section 4.2.7](#calibre_link-1070)描述的那樣。另外, 通常可以從一個已排序的子查詢中提供輸入值。例如: ``` SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab; ``` 但此語法在SQL標準里不允許,不能移植到其它數據庫系統。 [Table 9-47](#calibre_link-1537)展示了用于統計分析的聚集函數。 單獨列出這些函數僅僅是為了避免和那些經常使用的聚集函數混在一起而已。 "描述"列中的`_N_` 表示所有輸入行中使得輸入表達式不為 NULL 的行數。總的來說,如果計算本身變得沒有意義, 那么返回值將是 NULL 。例如當`_N_`為零的時候。 **Table 9-47\. 統計聚集函數** | 函數 | 參數類型 | 返回類型 | 描述 | | --- | --- | --- | --- | | `corr(`_Y_`, `_X_`)` | `double precision` | `double precision` | 相關系數 | | `covar_pop(`_Y_`, `_X_`)` | `double precision` | `double precision` | 總體協方差 | | `covar_samp(`_Y_`, `_X_`)` | `double precision` | `double precision` | 樣本協方差 | | `regr_avgx(`_Y_`, `_X_`)` | `double precision` | `double precision` | 自變量的平均值 (`sum(``_X_`)/`_N_`) | | `regr_avgy(`_Y_`, `_X_`)` | `double precision` | `double precision` | 因變量的平均值 (`sum(``_Y_`)/`_N_`) | | `regr_count(`_Y_`, `_X_`)` | `double precision` | `bigint` | 兩個表達式都不為 NULL 的輸入行數 | | `regr_intercept(`_Y_`, `_X_`)` | `double precision` | `double precision` | 根據所有輸入的點(`_X_`, `_Y_`)按照最小二乘法擬合成一個線性方程,然后返回該直線的 Y 軸截距 | | `regr_r2(`_Y_`, `_X_`)` | `double precision` | `double precision` | 相關系數的平方 | | `regr_slope(`_Y_`, `_X_`)` | `double precision` | `double precision` | 根據所有輸入的點(`_X_`, `_Y_`)按照最小二乘法擬合成一個線性方程, 然后返回該直線的斜率。 | | `regr_sxx(`_Y_`, `_X_`)` | `double precision` | `double precision` | `sum(``_X_`^2) - sum(`_X_`)^2/`_N_` (自變量的"平方和") | | `regr_sxy(`_Y_`, `_X_`)` | `double precision` | `double precision` | `sum(``_X_`*`_Y_`) - sum(`_X_`) * sum(`_Y_`)/`_N_` (自變量和因變量的"乘方積") | | `regr_syy(`_Y_`, `_X_`)` | `double precision` | `double precision` | `sum(``_Y_`^2) - sum(`_Y_`)^2/`_N_` (因變量的"平方和") | | `stddev(`_expression_`)` | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | `stddev_samp`的別名(歷史原因) | | `stddev_pop(`_expression_`)` | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | 總體標準差 | | `stddev_samp(`_expression_`)` | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | 樣本標準差 | | `variance`(`_expression_`) | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | `var_samp`的別名(歷史原因) | | `var_pop`(`_expression_`) | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | 總體方差(總體標準差的平方) | | `var_samp`(`_expression_`) | `smallint`, `int`, `bigint`, `real`, `double precision`, 或 `numeric` | 對于浮點類型的輸入返回`double precision`,其他輸入返回`numeric` | 樣本方差(樣本標準差的平方) |
                  <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>

                              哎呀哎呀视频在线观看