WEB开发网
开发学院数据库MSSQL Server 教你轻松掌握常用的子句、关键词和函数 阅读

教你轻松掌握常用的子句、关键词和函数

 2007-09-25 09:50:01 来源:WEB开发网   
核心提示: GROUP BY 令函数更有用 虽然以上提到的所有这些函数都能提供相当有用的信息,但是,教你轻松掌握常用的子句、关键词和函数(5),如果有GROUP BY子句帮忙的话更能让你在列的字段子集中应用这些函数,不要对你的Sales表中每一家公司一次又一次地执行MAX函数查询—&mda

GROUP BY 令函数更有用

虽然以上提到的所有这些函数都能提供相当有用的信息,但是,如果有GROUP BY子句帮忙的话更能让你在列的字段子集中应用这些函数。不要对你的Sales表中每一家公司一次又一次地执行MAX函数查询——你完全可以带GROUP BY子句获得同样的结果:

SELECT company, MAX(net_amount) FROM Sales GROUP BY company;

这样做可以获得每家公司net_amount的的最大值。在选择多列名的时候也可以采用该语句,你还可以用多列来对函数结果分组。

下面的例子演示了以上各种方式。首先,包括GROUP BY子句可以令你指定要显示的其他列。然而,你得知道这个例子将返回在组中遇到的第1个last_name值;Sum( net_amount )将显示全部公司的结果而不仅仅针对匹配姓氏的数据行。这是因为,我们只使用了Company字段来定义我们的组。

SELECT company, last_name,
SUM(net_amount) FROM Sales GROUP BY company;

在上面的例子中,last_name列实际上并没有提供什么有用的信息,但这样做是为了在下一个例子中要用到的功能做准备。你可以创建多列定义的组。这样就可以在结果集合中产生针对特定行的函数结果,而结果集合则是由所有指定的GROUP BY列联合起来创建的:

SELECT company, AVG(net_amount), last_name FROM Sales GROUP BY company, last_name;

上面的例子给每家公司中每一姓氏给出了平均的net_amount。你列出GROUP BY列的顺序控制着结果的排序,但是实际的函数值结果是一样的。

下面的例子表明如何组织结果而不显示分组的列。在有些场合这样做是很有用的,例如,如果要显示个人的销售量但却不显示姓名就能用上下面的例子了:

SELECT company, COUNT(sale_id)
FROM Sales GROUP BY company, last_name;

限制使用GROUP BY的查询

如你在以上示例中所看到的那样,你可以结合WHERE字句利用以上的概念限制查询的范围。WHERE子句会首先被计算,然后执行函数。在使用组的时候就是这样的。

SELECT company, AVG(net_amount), FROM Sales WHERE net_amount > 100 GROUP BY company;

上面的例子只对那些满足WHERE限制条件的数据行适用AVG函数。注意,WHERE子句必须放在GROUP BY子句之前。你还可以用HAVING语句对分组计算之后限制返回的结果集合。

SELECT company, AVG(net_amount),
FROM Sales WHERE last_name BETWEEN ‘a’
AND ‘m’ GROUP BY company HAVING
AVG(net_amount) > 500;

上一页  1 2 3 4 5 

Tags:轻松 掌握 常用

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