A. 關於資料庫中聚合函數問題
聚合函數對一組值執行計算並返回單一的值。聚合函數忽略空值。聚合函數經常與 SELECT 語句的 GROUP BY 子句一同使用。
所有聚合函數都具有確定性。任何時候用一組給定的輸入值調用它們時,都返回相同的值。有關函數確定性的更多信息,請參見確定性函數和非確定性函數。
僅在下列項中聚合函數允許作為表達式使用:
SELECT 語句的選擇列表(子查詢或外部查詢)。
COMPUTE 或 COMPUTE BY 子句。
HAVING 子句。
Transact-SQL 編程語言提供下列聚合函數:
AVG MAX
BINARY_CHECKSUM MIN
CHECKSUM SUM
CHECKSUM_AGG STDEV
COUNT STDEVP
COUNT_BIG VAR
GROUPING VARP
B. 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 學號 用來根據統計學生的總成績
C. 資料庫聚合函數count和count的區別
count 是用於統計查詢結果的個數,屬於聚合函數。
可以通過以下方面進行了解:
利用臨時表進行測試
withtbas
(
select1nfromalunionall
select1nfromalunionall
selectnullnfromalunionall
select2nfromalunionall
select3nfromal
)
1, 獲取查詢結果總行數
selectcount(*)fromtb;--5
由tb數據可見,tb中共有5條數據。
2,查詢非null欄位的行數
selectcount(n)fromtb;--4
該語句查詢欄位n不為null的總數量,由tb可見,n有一行為null,所以結果為4.
需要注意,若n為非null欄位,查詢總數時,使用count(*) 比 count(n)速度要快。
原因是count(欄位)在統計時,若欄位為null,計數不加。若欄位不是null,計數+1.
3, 統計非空欄位的非重復的內容數量
selectcount(distinctn)fromtb;--3
由於count(n)為獲取非null欄位數量。distinct為去掉重復值。所以,此結果為先去掉n的重復值再統計。
4,計算欄位的非重復數量
selectcount(distinctnvl(n,4)fromtb;--5
先提供null值為一個n中不存在的值,然後去掉重復值進行統計。
效果等同於
selectcount(distinctn)+1fromtb;
D. 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 檢查的行進行分組和聚集計算。
E. oracle聚合函數有哪些
--1: AVG(DISTINCT|ALL)
ALL表示對所有的值求平均值,DISTINCT只對不同的值求平均值
SELECT AVG(SAL) FROM SCOTT.EMP;
SELECT AVG(DISTINCT SAL) FROM SCOTT.EMP;
--2: MAX(DISTINCT|ALL)
求最大值,ALL表示對所有的值求最大值,DISTINCT表示對不同的值求最大值,相同的只取一次
(加不加查詢結果一致,不知DISTINCT有什麼用途,不同於AVG等聚合函數)
SELECT MAX(DISTINCT SAL) FROM SCOTT.EMP;
SELECT MAX(SAL) FROM SCOTT.EMP
--3: MIN(DISTINCT|ALL)
求最小值,ALL表示對所有的值求最小值,DISTINCT表示對不同的值求最小值,相同的只取一次
SELECT MIN(SAL) FROM SCOTT.EMP;
SELECT MIN(DISTINCT SAL) FROM SCOTT.EMP;
--4: STDDEV(distinct|all)
求標准差,ALL表示對所有的值求標准差,DISTINCT表示只對不同的值求標准差
SELECT STDDEV(SAL) FROM SCOTT.EMP;
SELECT STDDEV(DISTINCT SAL) FROM SCOTT.EMP;
--5: VARIANCE(DISTINCT|ALL)
求協方差 ALL表示對所有的值求協方差,DISTINCT表示只對不同的值求協方差
SELECT VARIANCE(SAL) FROM SCOTT.EMP;
SELECT VARIANCE(DISTINCT SAL) FROM SCOTT.EMP;
--6: SUM(DISTINCT|ALL)
求和 ALL表示對所有值求和,DISTINCT表示只對不同值求和(相同值只取一次)
SELECT SUM(SAL) FROM SCOTT.EMP;
SELECT SUM(DISTINCT SAL) FROM SCOTT.EMP;
--7:COUNT(DISTINCT|ALL)
求記錄、數據個數。 ALL對所有記錄,數組做統計, DISTINCT只對不同值統計(相同值只取一次)
SELECT COUNT(SAL) FROM SCOTT.EMP;
SELECT COUNT(DISTINCT SAL) FROM SCOTT.EMP;
----8: MEDIAN
求中位數
SELECT MEDIAN(SAL) FROM SCOTT.EMP;
SELECT MEDIAN(DISTINCT SAL) FROM SCOTT.EMP; --錯誤:DISTINCT 選項在此函數中禁用。
F. SQL 對字元串的聚合函數是什麼
字元串 SUM 是什麼含義?
只有COUNT 這個是有含義的。
你說的拼字元的意思是 只能通過自己做的函數來實現 資料庫好像沒有這樣的函數。
G. sql 語句中那些是聚合函數
常見聚合函數,max(最大)、min(最小)、sum(求和)、avg(平均)等,
示例如下,
1、創建測試表,
create table test_group(id number, value number);
H. 資料庫查詢,關於聚合函數 max()的用法。
錯的 聚集函數只能用於select和group by中的having子句
I. 資料庫 sql語句 聚合函數
select top 1 sum(btotal) as thesum,bpublish from book group by bpublish order by thesum desc
J. mysql中常用的聚合函數有哪些
一、AVG
AVG(col):返回指定列的平均值
二、COUNT
COUNT(col):返回指定列中非NULL值的個數
三、MIN/MAX
MIN(col):返回指定列的最小值
MAX(col):返回指定列的最大值
四、SUM
SUM(col):返回指定列的所有值之和
五、GROUP_CONCAT
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
返回由屬於一組的列值連接組合而成的結果
(10)資料庫聚合函數有哪些擴展閱讀
增加新用戶
(注意:和上面不同,下面的因為是 MySQL 環境中的命令,所以後面都帶一個分號作為命令結束符)
格式:grant select on 資料庫.* to 用戶名@登錄主機 identified by 「密碼」
例1、增加一個用戶 test1 密碼為 abc,讓他可以在任何主機上登錄,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以 root 用戶連入 MySQL,然後鍵入以下命令:
grant select,insert,update,delete on *.* to test1@「%」 Identified by 「abc」;
但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那麼他就可以在internet上的任何一台電腦上登錄你的mysql資料庫並對你的數據可以為所欲為了,解決辦法見例2。
例2、增加一個用戶 test2 密碼為 abc,讓他只可以在 localhost 上登錄,並可以對資料庫 mydb 進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL資料庫所在的那台主機),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問資料庫,只能通過MYSQL主機上的web頁來訪問了。
grant select, insert, update, delete on mydb.* to test2@localhost identified by 「abc」;
如果你不想 test2 有密碼,可以再打一個命令將密碼消掉。
grant select, insert, update, delete on mydb.* to test2@localhost identified by 「」;
下面來看看 MySQL 中有關資料庫方面的操作。注意:必須首先登錄到 MySQL 中,以下操作都是在 MySQL 的提示符下進行的,而且每個命令以分號結束。