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