您的位置:首页 > 数据库

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

2013-08-25 16:54 302 查看

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 子句顺序

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: