分组和排序
|
提示:分组和排序是两个不同的概念,当让GROUP BY 和ORDER BY也是非常不同的,这一点需要牢记。 |
下面列出他们之间的不同:
| ORDER BY | GROUP BY |
| 对筛选出的信息进行排序 | 对行进行分组,但输出可能不是分组的顺序 |
| 对任意列都可以使用 | 只可能使用选择列或者表达式,而且必须使用每个选择表达式 |
| 不一定需要 | 如果有聚集函数一起使用或表达式,则必须使用 |
| 注意:一般在使用GROUP BY语句时,应该也给出ORDER BY子句,这是保证数据正确排序的唯一方法,千万不要依赖GROUP BY进行排序。 |
1.1 未排序案例
下面我们来看一个例子:
SQL语句:
SELECT order_num, COUNT(*) AS items FROM OrderItems GROUP BY order_num HAVING COUNT(*) >= 3;
输出结果
![]() |
SQL语句分析:
可见,上面的语句先进行GROUP BY分组,然后再HAVING进行过滤,但过滤出来的结果没有进行排序。
1.2 排序案例
接下来我们再看一个进行排序的例子:
SQL语句:
SELECT order_num, COUNT(*) AS items FROM OrderItems GROUP BY order_num HAVING COUNT(*) >= 3
ORDER BY items, order_num;
输出结果:
![]() |
SQL语句分析:
在这个例子中,使用GROUP BY子句按订单号(order_num列)分组数据,以便COUNT(*)函数能够返回每个订单中的物品数目。HAVING子句 过滤数据,使得只返回包含三个或更多物品的订单。最后,用ORDER BY子句排序输出,可以看到输出的结果经行了增序排列。
本文深入探讨了SQL中GROUP BY和ORDER BY的区别与应用,通过具体案例展示如何使用GROUP BY进行数据分组,以及如何结合ORDER BY进行结果排序,强调了在数据处理中两者的互补作用。



428

被折叠的 条评论
为什么被折叠?



