📜  MS SQL Server 中的 Group by 子句

📅  最后修改于: 2021-09-10 02:22:32             🧑  作者: Mango

本文将详细讨论 Group by 子句。

数据库系统中存在大量数据。即使数据以适当的顺序以表格的形式排列,用户有时也希望对查询中的数据进行分组以便于访问。要以组的形式排列数据(列),必须在查询中使用名为 group by 的子句。 group by 子句根据查询中指定的列排列数据。基本语法是-

句法 :

select select_list 
from table_name 
group by column_1 column_2 

下面给出了一个例子 – 学生表:

Roll number Name Course
111 Riya CSE
112 Apoorva ECE
113 Mina Mech
114 Rita Biotechnology
115 Veena Chemical
116 Deepa EEE


如果用户想根据卷号对数据进行分组,可以按如下所示进行 –

select name
from student 
group by roll number 

输出 –

Name Roll number
Riya 111
Apoorva 112
Mina 113
Rita 114
Veena 115
Deepa 116

这样,可以使用 group by 子句对表进行分组。在实时生产中,group by 子句用于通过应用聚合函数(最大值、最小值等)生成计算。用户经常混淆 group by 和 order by 子句。 Order by 子句用于按时间顺序排列数据。 Group by 子句用于以组的形式排列数据。

为了更好的理解,下面给出一个例子。

Roll number Name Course
111 Riya CSE
112 Apoorva ECE
113 Mina Mech
114 Rita Biotechnology
115 Veena Chemical
116 Deepa EEE

使用 order by 和 group by 的查询 –

select  roll number
from student 
order by name ASC 

输出 –

Roll number Name
112 Apoorva
116 Deepa
113 Mina
114 Rita
111 Riya
115 Veena

select roll number
from student 
group by  name 

输出 –

Roll number Name
111 Riya
112 Apoorva
113 Mina
114 Rita
115 Veena
116 Deepa

从示例中,我们可以清楚地注意到 group by 和 order by 子句之间的区别。在 order by 的情况下,名称按字母顺序 (AZ) 排列。如果用户必须从 ZA 安排,可以按如下方式进行。

select 
roll number 
from 
student
order by
name DESC

输出将安排如下:

Roll number Name
115 Veena
111 Riya
114 Rita
113 Mina
116 Deepa
112 Apoorva


这样,可以修改布置。在group by的情况下,数据以组的形式排列,而不是按时间顺序排列。这里没有使用 where 子句,因为它会产生错误。