sql在excel中的应用(聚合、分组)

综述:

group by 子句:

GROUP BY 是可选的。

如果 SELECT 语句中没有 SQL 聚合函数,则省略汇总值。

GROUP BY 字段中的 Null值将被分组,而不会省略。但是,在任何 SQL 聚合函数中都不会计算 Null 值。

使用 WHERE 子句可以排除不想分组的行,使用 HAVING 子句则可以在分组记录之后筛选这些记录。

除非 GROUP BY 字段列表中的字段包含 Memo或 OLE Object数据,否则,假如 SELECT 语句包含至少一个 SQL 聚合函数,则 GROUP BY 字段列表中的字段就可以引用 FROM 子句所列出的任何表中的任何字段,无论 SELECT 语句是否包含该字段。Microsoft Access 数据库引擎无法对“Memo”或“OLE Object”字段进行分组。

SELECT 字段列表中的所有字段都必须包括在 GROUP BY 子句中,或作为 SQL 聚合函数的参数包括在内。

order by子句:

order by子句的默认排序方式是升序(ASC),假如要对字段降序,可以使用DESC.order by还可以以字段指定部分排序.

HAVING 子句:

HAVING 子句可以包含最多 40 个通过逻辑运算符(如 And 和 Or)链接的表达式。

HAVING与WHERE的主要区别:

1: WHERE用于筛选未分组的记录,HAVING用于筛选分组后的记录

2:HAVING以聚合函数为筛选条件,WHERE则不能.

聚合函数:

1、聚合函数中,SUM、COUNT、AVG均忽略NULL值,当使用GROUP BY分组查询时,所有聚合函数均不会计算NULL值

2、COUNT(*)是统计表的行记录,COUNT(字段)是统计表指定字段的记录。

3、聚合函数中的参数可以是字段名称、函数和常量,但不能是其他聚合函数。)

3、聚合函数除列举的求和、计数、平均值、首次、末次,还包括标准偏差和标准方差。

注意:select语句中的每一列都必须在group by 子句中给出

例子1:假如我们想对销售表按日期升序排序,按金额降序排序,我们可以输入:

              select * from [销售表$] order by 日期,金额 DESC

例子2:假如我们希望返回不重复记录中,数量>20的记录.我们可以输入:

      select 日期,业务员,数量,金额 from [销售表$] group by 日期,业务员,数量,金额 HAVING 数量>20

假如我们希望返回每月各业务员销售总金额>1700的记录,我们可以输入:

select 日期,业务员,sum(金额) as 总金额 from [销售表$] group by 日期,业务员 HAVING sum(金额)>1700

例子3:假如我们想返回第一次出现和最后出现的业务员的名字,我们可以输入:

select first(业务员) as 第一个出现的业务员,last(业务员) as 最后一个出现的业务员 from [销售表$]

假如我们想返回第一条销售记录,我们可以输入:

select first(日期) as 日期,first(业务员) as 业务员,first(数量) as 数量,first(金额) as 金额 from [销售表$]

你可能感兴趣的:(sql在excel中的应用(聚合、分组))