A. 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 學號 用來根據統計學生的總成績
B. 十萬火急:SQL語句的聚合問題,請看詳細說明
可以這樣寫:
select ROW_NUMBER()Over(ORDER BY 月份) as 記錄編號,月份,sum(收入) as 收入,sum(支出) as 支出,sum(收入)-sum(支出) as 差額 from(
select left(convert(nvarchar(20),getdate(),120),7) as 月份,sum(AT_Amount) as 收入,0 as 支出
where AT_IOrP='收入' group by left(convert(nvarchar(20),getdate(),120),7)
union all
select left(convert(nvarchar(20),getdate(),120),7) as 月份,0 as 收入,sum(AT_Amount) as 支出
where AT_IOrP='支出' group by left(convert(nvarchar(20),getdate(),120),7)
) as tmpt group by 月份 order by 月份
sql2005中才有ROW_NUMBER,可以採用臨時表:
select Identity(int,1,1) as 記錄編號,月份,sum(收入) as 收入,sum(支出) as 支出,sum(收入)-sum(支出) as 差額
into #tt from(
select left(convert(nvarchar(20),getdate(),120),7) as 月份,sum(AT_Amount) as 收入,0 as 支出
where AT_IOrP='收入' group by left(convert(nvarchar(20),getdate(),120),7)
union all
select left(convert(nvarchar(20),getdate(),120),7) as 月份,0 as 收入,sum(AT_Amount) as 支出
where AT_IOrP='支出' group by left(convert(nvarchar(20),getdate(),120),7)
) as tmpt group by 月份 ) as tmpt2
select * from #tt
drop table #tt
C. SQL 分組條件聚合怎麼實現
不是必須配合
聚合函數
的。
如圖,表a
如圖分組即不包含聚合函數:select
a
from
a
group
by
a;
分組示意如下:group
by
a
即
a列相同的值為1組。
聚合函數則是為了對
數據分組
後進行統計
如圖分組即統計每組值的記錄數:
D. sql 語句中那些是聚合函數
常見聚合函數,max(最大)、min(最小)、sum(求和)、avg(平均)等,
示例如下,
1、創建測試表,
create table test_group(id number, value number);
E. sql 查詢 聚合函數怎麼用求助!!
select bookid,quantity,sum(quantity*price)銷售總額
from sales GROUP BY BookID
後面跟上這句,表示BookID的多個數聚合而成。
F. SQL Server 中如何使用聚合函數
根據我的使用經驗,聚合函數主要是做統計用的,有以下兩種形式比較常見:
1. SELECT COUNT(欄位1) FROM 表A 統計欄位1在表A中出現的次數
2. SELECT 學號,SUM(各科成績) FROM student GROUP BY 學號 用來根據統計學生的總成績
G. 在SQL中的聚合函數
原則上,你要用group by,那麼前面抽取的欄位必須要作為分組依據,否則就需要sum,avg,max等函數的處理。
H. 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
檢查的行進行分組和聚集計算。
I. sql聚合函數的使用
應該這樣是可以實現的,不過我未測試,你試下!
SELECT A.[姓名]
,B.[存款] - C.[消費] AS [余額]
FROM [資料表] A
,(SELECT [Id]
,SUM([存款]) AS [存款]
FROM [存款表]
GROUP BY [Id]) B
,(SELECT [Id]
,SUM([消費]) AS [消費]
FROM [消費表]
GROUP BY [Id]) C
WHERE A.[Id] = B.[Id]
AND A.[Id] = C.[Id]
AND B.[Id] = C.[Id]
但是對於只有存款而沒有消費或者有消費而沒有存款的人,這樣查詢是得到余額的,所以還要修改一下,修改後如下所示即可:
SELECT A.[姓名]
,ISNULL(B.[存款],0) - ISNULL(C.[消費],0) AS [余額]
FROM [資料表] A
LEFT JOIN (SELECT [Id]
,SUM([存款]) AS [存款]
FROM [存款表]
GROUP BY [Id]) B
ON A.[Id] = B.[Id]
LEFT JOIN (SELECT [Id]
,SUM([消費]) AS [消費]
FROM [消費表]
GROUP BY [Id]) C
ON A.[Id] = C.[Id]
AND B.[Id] = C.[Id]
J. sql中常用的聚合函數有哪些
聚合函數是對一組值執行計算並返回單一的值的函數,它經常與SELECT語句的GROUP BY子句一同使用,SQL SERVER 中具體有哪些聚合函數呢?我們來一一看一下:
1. AVG 返回指定組中的平均值,空值被忽略。
例:select prd_no,avg(qty) from sales group by prd_no
2. COUNT 返回指定組中項目的數量。
例:select count(prd_no) from sales
3. MAX 返回指定數據的最大值。
例:select prd_no,max(qty) from sales group by prd_no
4. MIN 返回指定數據的最小值。
例:select prd_no,min(qty) from sales group by prd_no
5. SUM 返回指定數據的和,只能用於數字列,空值被忽略。
例:select prd_no,sum(qty) from sales group by prd_no
6. COUNT_BIG 返回指定組中的項目數量,與COUNT函數不同的是COUNT_BIG返回bigint值,而COUNT返回的是int值。
例:select count_big(prd_no) from sales
7. GROUPING 產生一個附加的列,當用CUBE或ROLLUP運算符添加行時,輸出值為1.當所添加的行不是由CUBE或ROLLUP產生時,輸出值為0.
例:select prd_no,sum(qty),grouping(prd_no) from sales group by prd_no with rollup
8. BINARY_CHECKSUM 返回對表中的行或表達式列表計算的二進制校驗值,用於檢測表中行的更改。
例:select prd_no,binary_checksum(qty) from sales group by prd_no
9. CHECKSUM_AGG 返回指定數據的校驗值,空值被忽略。
例:select prd_no,checksum_agg(binary_checksum(*)) from sales group by prd_no
10. CHECKSUM 返回在表的行上或在表達式列表上計算的校驗值,用於生成哈希索引。
11. STDEV 返回給定表達式中所有值的統計標准偏差。
例:select stdev(prd_no) from sales
12. STDEVP 返回給定表達式中的所有值的填充統計標准偏差。
例:select stdevp(prd_no) from sales
13. VAR 返回給定表達式中所有值的統計方差。
例:select var(prd_no) from sales
14. VARP 返回給定表達式中所有值的填充的統計方差。
例:select varp(prd_no) from sales