浅析SQL的排序,分组,统计常用语句(2)_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:揭秘SQL Server视图使用中4个限制条件
SQL Server的 视图可以起到数据保密、保证数据的逻辑独立性、简化查询操作等等作用。但是视图跟表这个基本对象还是有重大的区别,在使用视图的时候,需要遵守4大限制。 限制条件一:定义视图的查询语句中不能够使用某些关键字 我们都知道,视图其实就是一组


6.进一步了解WHERE和HAVING语句 
如果你对何时应该使用WHERE,何时使用HAVING仍旧很迷惑,请遵照下面的说明: 
WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。 
HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。 
7.使用聚合函数统计分组数据 
分组数据可以帮助我们分析数据,但是有时我们可能需要更多的信息而不仅仅是分组。你可以使用聚合函数来统计分组数据。例如,下面的语句显示每批订购单的总价钱。 
SELECT OrderID, Sum(Cost * Quantity) AS OrderTotal 
FROM Orders GROUP BY OrderID
对于其它的分组来说,SELECT和GROUP BY列必须匹配。而SELECT语句包含聚合函数时这一规则是一个例外。 
8.统计聚合数据 
你可以继续统计数据为每个分组显示一个分类统计。SQL的ROLLUP操作符可以为每个分组显示一个额外的分类统计。这个分类统计是使用聚合函数计算每个分组中的所有记录得到的结果。下面的语句为每个分组计算OrderTotal: 
SELECT Customer, OrderNumber, Sum(Cost * Quantity) 
AS OrderTotal FROM Orders GROUP BY Customer, 
OrderNumber WITH ROLLUP 
对于有两个分别为20和25 OderTotal值的分组,ROLLUP显示一个OrderTotal值45。ROLLUP结果中的第一条记录是唯一的,因为它是计算所有分组记录,这个值是整个记录集的总值。 
ROLLUP在聚合函数中不支持 DISTINCT,也不支持GROUP BY ALL语句。 
9.统计每个列 
CUBE操作符比ROLLUP更进一步,它返回每个分组中重复值的个数。它的结果和ROLLUP相同,但是对每位客户的每一列CUBE包含一个额外的记录。下面的语句显示每个分组的统计和额外每位客户的统计。 
SELECT Customer, OrderNumber, Sum(Cost * Quantity) 
AS OrderTotal FROM Orders GROUP BY Customer, 
OrderNumber WITH CUBE 
CUBE可以给最综合的统计。它不仅完成聚合和ROLLUP的功能,还可以计算定义分组的其它列,换句话说,CUBE统计每个可能的列组合。 
CUBE不支持GROUP BY ALL语句。 
10:对统计结果排序 
当CUBE的结果令人迷惑时(它经常是这样),可以添加一个GROUPING函数,如下所示: 
SELECT GROUPING(Customer), OrderNumber, 
Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP 
BY Customer, OrderNumber WITH CUBE 
结果中每行包含两个额外的值: 
值1表示左边的值是一个统计值,是ROLLUP或CUBE的操作符。 
值0表示左边的值是一条由最初的GROUP BY语句产生的详细记录。 

分享:解读SQL Server数据库开发要注意的21点
1、了解你将要对数据进行的操作 为你的数据库创建一个健壮的索引,那可是功德一件。可要做到这一点简直就是一门艺术。每当你为一个表添加一个索引,SELECT会更快了,可INSERT和DELETE却大大的变慢了,因为创建了维护索引需要许多额外的工作。显然,这里问题的

共2页上一页12下一页
来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2010-02-03
相关Mssql数据库教程