Store_Information 表格
store_name |
Sales |
Date |
Los Angeles |
$1500 |
Jan-05-1999 |
San Diego |
$250 |
Jan-07-1999 |
Los Angeles |
$300 |
Jan-08-1999 |
Boston |
$700 |
Jan-08-1999 |
我们就打入, SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name
结果:
store_name |
SUM(Sales) |
Los Angeles |
$1800 |
San Diego |
$250 |
Boston |
$700 |
当我们选不只一个栏位,且其中至少一个栏位有包含函数的运用时,我们就需要用到 GROUP BY 这个指令。在这个情况下,我们需要确定我们有 GROUP BY 所有其他的栏位。换句话说,除了有包括函数的栏位外,我 们都需要将其放在 GROUP BY 的子句中
SUM
返回表达式中所有值的和,或只返回 DISTINCT 值。SUM 只能用于数字列。空值将被忽略。
A. 在聚合和行聚合中使用 SUM
下列示例显示聚合函数和行聚合函数之间的区别。第一个示例显示只提供汇总数据的聚合函数,第二个示例显示提供详尽数据和汇总数据的行聚合函数。
USE pubs
GO
-- Aggregate functions
SELECT type, SUM(price), SUM(advance)
FROM titles
WHERE type LIKE '%cook'
GROUP BY type
ORDER BY type
GO
下面是结果集:
type
------------ -------------------------- --------------------------
mod_cook 22.98 15,000.00
trad_cook 47.89 19,000.00
(2 row(s) affected)
USE pubs
GO
-- Row aggregates
SELECT type, price, advance
FROM titles
WHERE type LIKE '%cook'
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
下面是结果集:
type price advance
------------ -------------------------- --------------------------
mod_cook 19.99 0.00
mod_cook 2.99 15,000.00
sum
==========================
22.98
sum
==========================
15,000.00
type price advance
------------ -------------------------- --------------------------
trad_cook 20.95 7,000.00
trad_cook 11.95 4,000.00
trad_cook 14.99 8,000.00
sum
==========================
47.89
sum
==========================
19,000.00
(7 row(s) affected)
B. 计算多列的组合计
下例计算每类书籍的价格和预付款总和。
USE pubs
GO
SELECT type, SUM(price), SUM(advance)
FROM titles
GROUP BY type
ORDER BY type
GO
下面是结果集:
type
------------ -------------------------- --------------------------
business 54.92 25,125.00
mod_cook 22.98 15,000.00
popular_comp 42.95 15,000.00
psychology 67.52 21,275.00
trad_cook 47.89 19,000.00
UNDECIDED (null) (null)
(6 row(s) affected)
<h1><a name="_count"></a>COUNT</h1><p>返回组中项目的数量。</p><p>COUNT(*) 返回组中项目的数量,这些项目包括 NULL 值和副本。</p><p>COUNT(ALL <em>expression</em>) 对组中的每一行都计算 <em>expression</em> 并返回非空值的数量。</p><p>COUNT(DISTINCT <em>expression</em>) 对组中的每一行都计算 <em>expression</em> 并返回唯一非空值的数量。</p><h5>示例</h5><h6>A. 使用 COUNT 和 DISTINCT</h6><p>下面的示例查找作者所居住的不同城市的数量。</p><pre><code>USE pubs
GO
SELECT COUNT(DISTINCT city)
FROM authors
GO
下面是结果集:
-----------
16
(1 row(s) affected)
B. 使用 COUNT(*)
下面的查询查找图书和书名的总数:
USE pubs
GO
SELECT COUNT(*)
FROM titles
GO
下面是结果集:
-----------
18
(1 row(s) affected)
C. 与其它聚合函数一起使用 COUNT(*)
下面的示例显示可以与选择列表中的其它聚合函数结合使用的 COUNT(*)。
USE pubs
GO
SELECT COUNT(*), AVG(price)
FROM titles
WHERE advance > $1000
GO
下面是结果集:
----------- --------------------------
15 14.42
(1 row(s) affected)