在本文中将详细讨论“分组”子句。
数据库系统中存在大量数据。即使数据以适当的顺序以表的形式排列,用户有时仍希望将查询中的数据分组以便于访问。要以组的形式排列数据(列),必须在查询中使用名为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子句之间的区别。在按顺序排序的情况下,名称按字母顺序(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 |
这样,可以修改布置。在分组的情况下,数据以分组的形式排列,但不按时间顺序排列。此处,where子句未使用,因为它会生成错误。