sql必知必会笔记-分组数据
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 子句顺序