當前位置:首頁 » 編程語言 » sql語句的聚合函數

sql語句的聚合函數

發布時間: 2023-07-09 03:09:25

A. 第十三章 sql聚合函數 XMLAGG

一個聚合函數,它創建一個串接的值字元串。

XMLAGG 聚合函數返回由 string-expr 中的所有值組成的串接字元串。
返回值的數據類型為 VARCHAR ,默認長度為 4096 。

以下兩個示例都返回相同的單個值,即 Sample.Person 表的 Home_State 列中列出的所有值的串聯字元串。

請注意,此連接字元串包含重復值。

返回值中將省略 string-expr 為NULL的行。如果至少返回一個非空字元串值,則從返回值中省略 string-expr 為空字元串( '' )的行。如果唯一非空的 string-expr 值是空字元串( '' ),則返回值是單個空字元串。

XMLAGG 不支持數據流欄位。為 string-expr 指定流欄位會導致 SQLCODE-37 。

XMLAGG 的一個常見用法是標記列中的每個數據項。這是通過組合 XMLAGG 和 XMLELEMENT 來實現的,如下例所示:

這將產生如下所示的輸出字元串:

XMLAGG 函數將來自多行的表列的值連接到單個字元串中。因為在計算所有聚合欄位之後,將逐個從句應用於查詢結果集,所以逐個不能直接影響該字元串中的值序列。在某些情況下, XMLAGG 結果可能會按順序顯示,但不應依賴此排序。給定聚合結果值中列出的值無法顯式排序。

下面的示例創建在 Sample.Person 表的 FavoriteColors 列中找到的所有不同值的串聯字元串。因含頌此,對於 ALL_COLLES 列,每行都有相同的值。請注意,雖然有些行的 FavoriteColors 為空值,但該值不包括在連接的字元串中。數據值以內部格式返回。

下面的示例返回以 「A」 開頭的 Home_State 值的串聯字頃旅符串。它返回不同的 Home_State 值(不同的 Home_State );與不同的 Home_City 值對應的 Home_State 值(與( Home_City ) Home_State 不同),其中可能包括 Home_City 的一個唯一NULL;以及所有 Home_State 值:

下面的示例為每個州創建在 Home_City 列中找到的所有不同值的串聯字元串。同一州的每一行都包含該州所有不同城市值的列表:

以下示例使用 %AFTERHAVING 關鍵字。它為雀老凳每個包含至少一個滿足 HAVING 子句條件(以 「C」 或 「K」 開頭的名稱)的 Name 值的 Home_State 返回一行。第一個 XMLAGG 函數返回由該州的所有名稱組成的連接字元串。第二個 XMLAGG 函數返回僅由滿足 HAVING 子句條件的名稱組成的連接字元串:

對於以下示例,假設我們有下表 AutoClub :

B. sql語句中如何將聚合函數值和另一個值相乘

sql中提供的聚合函數,通常包括sum,count,avg,max,min,但不包括乘法;
比如有這樣一個數據集:
id x
1 1
1 2
1 3
2 4
2 5
2 6
;
想實現成如下形式
id prob_x
1 6
2 120
即讓第一組中1*2*3=6
第二組中4*5*6=120
用data步中first+retain可以實現,但data需要先排序;
而sql的聚合函數中也沒有相乘這一函數,於是有些牛人想到通過數學轉化,將乘法鎮凳拍轉為加法,而sql中可以
用sum實現加法聚合。
說來也簡單,主要想法就是A*B=exp(lnA*B)=exp(lnA+lnB);
select id,exp(sum(log(x))) as prob_x from data_set group by id;
=============================================
但我覺得也需要補充一點東西:
首先有0的情況粗笑下,log函數的定御羨義域為{x>0},有0出現的時候,改組最後結果肯定為0;
其次是有負數的情況,需要對絕對值進行計算,計算每組負數的個數,如果負數是偶數個,那麼結果為正,
如果為奇數個,則需要在結果上添上負號。
最後可以寫成這樣
select id,(case when sum(case when x=0 then 1 else 0 end) >0 then 0
when mod(sum(case when x<0 then 1 else 0 end),2)=0 then exp(sum(log(x)))
else -1*exp(sum(log(abs(x)))) end) as prod_x from data_set group by id;

C. sql聚合函數有哪些

聚集函數
和大多數其它關系資料庫產品一樣,PostgreSQL
支持聚集函數。一個聚集函數從多個輸入行中計算出一個結果。比如,我們有在一個行集合上計算
count(數目),
sum(總和),
avg(均值),
max(最大值),
min(最小值)的函數。
比如,我們可以用下面的語句找出所有低溫中的最高溫度:
SELECT
max(temp_lo)
FROM
weather;
max
-----
46
(1
row)如果我們想知道該讀數發生在哪個城市,可能會用:
SELECT
city
FROM
weather
WHERE
temp_lo
=
max(temp_lo);
--
錯!不過這個方法不能運轉,因為聚集函數
max
不能用於
WHERE
子句中。存在這個限制是因為
WHERE
子句決定哪些行可以進入聚集階段;因此它必需在聚集函數之前計算。不過,我們可以用其它方法實現這個目的;這里我們使用子查詢:
SELECT
city
FROM
weather
WHERE
temp_lo
=
(SELECT
max(temp_lo)
FROM
weather);
city
---------------
San
Francisco
(1
row)這樣做是可以的,因為子查詢是一次獨立的計算,它獨立於外層查詢計算自己的聚集。
聚集同樣也常用於
GROUP
BY
子句。比如,我們可以獲取每個城市低溫的最高值:
SELECT
city,
max(temp_lo)
FROM
weather
GROUP
BY
city;
city
|
max
---------------+-----
Hayward
|
37
San
Francisco
|
46
(2
rows)這樣每個城市一個輸出。每個聚集結果都是在匹配該城市的行上面計算的。我們可以用
HAVING
過濾這些分組:
SELECT
city,
max(temp_lo)
FROM
weather
GROUP
BY
city
HAVING
max(temp_lo)
<
40;
city
|
max
---------+-----
Hayward
|
37
(1
row)這樣就只給出那些
temp_lo
值曾經有低於
40
度的城市。最後,如果我們只關心那些名字以"S"開頭的城市,我們可以用:
SELECT
city,
max(temp_lo)
FROM
weather
WHERE
city
LIKE
'S%'
GROUP
BY
city
HAVING
max(temp_lo)
<
40;語句中的
LIKE
執行模式匹配,在節9.7里有解釋。
理解聚集和
SQL

WHERE

HAVING
子句之間的關系非常重要。WHERE

HAVING
的基本區別如下:WHERE
在分組和聚集計算之前選取輸入行(它控制哪些行進入聚集計算),而
HAVING
在分組和聚集之後選取輸出行。因此,WHERE
子句不能包含聚集函數;因為試圖用聚集函數判斷那些行將要輸入給聚集運算是沒有意義的。相反,HAVING
子句總是包含聚集函數。當然,你可以寫不使用聚集的
HAVING
子句,但這樣做沒什麼好處,因為同樣的條件可以更有效地用於
WHERE
階段。
在前面的例子里,我們可以在
WHERE
里應用城市名稱限制,因為它不需要聚集。這樣比在
HAVING
里增加限制更加高效,因為我們避免了為那些未通過
WHERE
檢查的行進行分組和聚集計算。

D. sql server中什麼是聚合函數

count() 所有記錄數
count(*)所有非null記錄數
avg() 某一列平均值

min() 某一列最小值
max() 某一列最大值
sum() 某一列總和

E. 在sql中什麼是聚合函數 啊

select sum(欄位名) from 表名
sum 就是一個聚合函數,求某一欄位的值

F. SQL Server中的聚合函數有哪些

SQL Server中的聚合函數有:

1.count() 所有記錄數

2.count(*)所有非null記錄數

3.avg() 某一列平均值

4.min() 某一列最小值

5.max() 某一列最大值

6.sum() 某一列總和

使用方法:

1. SELECT COUNT(欄位1) FROM 表A 統計欄位1在表A中出現的次數

2. SELECT 學號,SUM(各科成績) FROM student GROUP BY 學號 用來根據統計學生的總成績

G. SQL語句中 聚合函數count()忽略空值么

SQL語句函數count(),如果括弧中是列名稱,是忽略空值NULL的,即返回列的值的數目,不包含NULL值。

COUNT函數簡陵盯,用於Excel中對給定數據集合或者單元格區域中數據的攔和個數進行計數,其語法結構為COUNT(value1,value2, ...)。COUNT函數只能對數字數據進行統計,對於空單元格、邏輯值或者文本數據將被忽略,因此可以利用該函數來判斷給定的單元格區域中是否包含空單元格。

(7)sql語句的聚合函數擴展閱讀:

如果參數是一個數組或引用,那麼只統計數組或引用中的數字;數組中或引用的空單元格、邏輯值、文字或錯誤值都將忽略。具體如下:

如果參數為數字、日期或者代表數字的文本(汪野例如,用引號引起的數字,如 "1"),則將被計算在內。

邏輯值和直接鍵入到參數列表中代表數字的文本被計算在內。

如果參數為錯誤值或不能轉換為數字的文本,則不會被計算在內。

如果參數為數組或引用,則只計算數組或引用中數字的個數。不會計算數組或引用中的空單元格、邏輯值、文本或錯誤值。

熱點內容
python常用正則表達式 發布:2025-02-09 04:42:53 瀏覽:177
機器人編程培訓哪家好 發布:2025-02-09 04:37:44 瀏覽:307
上海怎麼學習java 發布:2025-02-09 04:26:39 瀏覽:22
erp系統搭建備用伺服器 發布:2025-02-09 04:07:38 瀏覽:945
戴爾伺服器在bios怎麼配置管理ip 發布:2025-02-09 04:01:53 瀏覽:550
小魚易連雲存儲 發布:2025-02-09 03:59:47 瀏覽:89
正在限制訪問 發布:2025-02-09 03:47:17 瀏覽:903
架設資料庫 發布:2025-02-09 03:41:29 瀏覽:966
imacpro哪個配置最好 發布:2025-02-09 03:32:29 瀏覽:253
用編程對話 發布:2025-02-09 03:23:43 瀏覽:88