SQL 必知必会·笔记<8>分组数据

1. 使用GROUP BY子句创建分组

示例:

SELECT vend_id, COUNT(*) AS num_prods
FROM Products
GROUP BY vend_id;

 

注意

  • GROUP BY 子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致地进行数据分组。
  • 如果分组列中包含具有NULL 值的行,则NULL 将作为一个分组返回。如果列中有多行NULL 值,它们将分为一组。
  • GROUP BY 子句必须出现在WHERE 子句之后,ORDER BY 子句之前。

 

2. 使用HAVING过滤分组

除了能用GROUP BY 分组数据外,SQL 还允许过滤分组,规定包括哪些 分组,排除哪些分组

示例:

SELECT cust_id, COUNT(*) AS orders
FROM Orders
GROUP BY cust_id
HAVING COUNT(*) >= 2;

 

说明:HAVING 和WHERE 的差别

WHERE 在数据分组前进行过滤,HAVING 在数 据分组后进行过滤。这是一个重要的区别,WHERE 排除的行不包括在 分组中。这可能会改变计算值,从而影响HAVING 子句中基于这些值 过滤掉的分组。

 

3. 分组和排序

提示:不要忘记ORDER BY

一般在使用GROUP BY 子句时,应该也给出ORDER BY 子句。这是保 证数据正确排序的唯一方法。千万不要仅依赖GROUP BY 排序数据。

 

4. SELECT 子句顺序

 

posted @ 2013-08-25 16:54  gyzhao  阅读(734)  评论(1编辑  收藏  举报