SQLSERVER⼊门进阶教程——分组和排序(GROUPBY和
ORDERBY)
分组和排序
提⽰:分组和排序是两个不同的概念,当让GROUP BY 和ORDER BY也是⾮常不同的,这⼀点需要牢记。
下⾯列出他们之间的不同:
ORDER BY GROUP BY
对筛选出的信息进⾏排序对⾏进⾏分组,但输出可能不是分组的顺序
对任意列都可以使⽤只可能使⽤选择列或者表达式,⽽且必须使⽤每个选择表达式
不⼀定需要如果有聚集函数⼀起使⽤或表达式,则必须使⽤
注意:⼀般在使⽤GROUP BY语句时,应该也给出ORDER BY⼦句,这是保证数据正确排序的唯⼀⽅法,千万不要依赖GROUP BY进⾏排序。
1.1 未排序案例
下⾯我们来看⼀个例⼦:
SQL语句:
groupby分组
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⼦句排序输出,可以看到输出的结果经⾏了增序排
列。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。