WEB开发网
开发学院数据库MSSQL Server SQL进行排序、分组、统计的10个新技巧 阅读

SQL进行排序、分组、统计的10个新技巧

 2007-11-11 12:57:09 来源:WEB开发网   
核心提示: 必须注意的是WHERE语句是在GROUP BY语句求值之前进行数据过滤的,与GROUP BY语句一样,SQL进行排序、分组、统计的10个新技巧(2),WHERE语句也不支持聚合函数,4.返回所有分组当你使用WHERE语句过滤数据时,例如,下面的语句返回一个唯一的ZIP编码列,结果分组中只显示你指定的那些记录,而符合分

必须注意的是WHERE语句是在GROUP BY语句求值之前进行数据过滤的。与GROUP BY语句一样,WHERE语句也不支持聚合函数。

4.返回所有分组

当你使用WHERE语句过滤数据时,结果分组中只显示你指定的那些记录,而符合分组定义但是不满足过滤条件的数据不会包含在某个分组中。当你想在分组中包含所有数据时添加关键字ALL即可,这时WHERE条件就不起作用。例如,在前面的例子中添加关键字ALL就会返回所有的ZIP分组,而不是仅在肯塔基州的那些。

SELECT ZIP FROM CustomersWHEREState = 'KY' GROUP BY ALL ZIP

这样看来,这两个语句存在冲突,你可能不会以这种方式使用关键字ALL。当你使用聚合函数计算某一列时,使用ALL关键字可能会很方便。例如,下面的语句计算每个肯塔基州ZIP中的顾客数,同时,还会显示其它的ZIP值。

SELECT ZIP, Count(ZIP) AS KYCustomersByZIP FROM
CustomersWHEREState = 'KY' GROUP BY ALL ZIP

结果分组包括潜在数据中的所有ZIP值,然而,对于那些不是肯塔基州ZIP分组的聚合列(KYCustomersByZIP)将会显示0。远程查询不支持GROUP BY ALL。

5.分组后筛选数据

WHERE语句在GROUP BY语句之前进行计算。当你需要在分组之后筛选数据时,可以使用HAVING语句。通常情况下,WHERE语句和HAVING语句的返回结果是一样的,但是值得注意的是这两个语句不可互换。当你迷惑时,可以遵循下面的说明:使用WHERE语句过滤记录,使用HAVING语句过滤分组。

一般情况,你会使用HAVING语句和某个聚合函数计算一个分组。例如,下面的语句返回一个唯一的ZIP编码列,但是可能不会包含潜在数据源中所有的ZIP。

SELECT ZIP, Count(ZIP) AS CustomersByZIP FROM
Customers GROUP BY ZIP HAVING Count(ZIP) = 1

Tags:SQL 进行 排序

编辑录入:coldstar [复制链接] [打 印]
赞助商链接