SQL中的分组依据和排序依据之间的差异
作者:
Laura McKinney
创建日期:
1 四月 2021
更新日期:
15 可能 2024
内容
SQL允许组织查询获得的数据。我们有两个子句用于组织从查询中获得的数据,即Group By和Order By子句。区分Group By和Order By子句的重点是 通过...分组 当我们想要将聚合函数应用于多个元组和 订购依据 当我们要对查询获得的数据进行排序时,使用子句。让我们借助下面显示的比较表来讨论Group By子句和Order By子句之间的一些区别。
- 比较表
- 定义
- 关键差异
- 结论
比较表
比较基础 | 通过...分组 | 订购依据 |
---|---|---|
基本的 | Group By用于形成元组集合的Group。 | Order By用于按排序形式排列作为查询结果获得的数据。 |
属性 | 聚合函数下的属性不能在Group By子句中。 | 聚合下的属性可以在“按条款排序”中。 |
地面 | 根据属性值之间的相似性进行。 | 根据升序和降序执行。 |
按条款分组的定义
平均函数(例如avg,min,max,sum,count)应用于单个元组集。如果您想将聚合函数应用于元组集合,则可以使用Group by子句。 Group by子句对具有相同属性值的元组进行分组。
有一件事情要 记得 关于Group By子句,请确保 属性 在下面 通过...分组 子句必须出现在 选择 子句但是 不 在一个 聚合函数。如果Group By子句包含的属性不在SELECT子句下,或者如果它在SELECT子句下但在聚合函数下,则查询将变得错误。因此,可以说Group By子句始终与SELECT子句一起使用。
让我们以一个示例来了解Group By子句。
从Department_ID的“教师组”中选择“部门_ID”,“ avg(薪水)”作为“ avg_salary”。 您可以看到,最初形成的中间结果将部门分组。 接下来,将聚合函数avg应用于每个部门组,结果如下所示。按条款定单的定义
Order By子句用于按查询顺序显示查询获得的数据。与Group By子句类似,Order By子句也与SELECT子句一起使用。如果您未提及排序顺序,则Order By子句将按升序对数据进行排序。您可以将升序指定为 升序 和降序为 描述.
让我们借助以下示例了解Order By子句的工作。我们有一个教师表,我将对教师表的两列Department_Id和Salary进行排序。
选择Department_ID,“按教师订单的薪水按Department_Id asc,薪水描述”。您可以看到,它首先按升序排列Department _ID,然后按降序排列同一部门的薪水。
- Group By子句将SELECT子句下的关系中的元组集进行分组。另一方面,Order By子句按升序或降序对查询结果进行排序。
- 聚合功能下的属性不能在Group By子句下,而聚合功能下的属性可以在Order By子句下。
- 元组的分组是基于元组的属性值之间的相似性完成的。另一方面,排序或排序是基于升序或降序进行的。
结论:
如果要形成元组集合的组,则必须使用Group By子句。如果您想按升序或降序排列一组元组中的单列或多列数据,则必须使用Order By子句。