本文将详细讨论 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 子句,因为它会产生错误。