SQL中Orderby和GroupBy的区别
问题1)我浏览了许多网站,无法理解SQL中Orderby和GroupBy的区别,sql,oracle,Sql,Oracle,问题1)我浏览了许多网站,无法理解groupby和orderby 谁能帮我举个例子吗 问题2)类似这样的示例查询 例如:-从名称A中选择A.sno、A.sname 查询结果如下所示 从名称中选择sno、sname 这就是为什么我们使用A和这个点A.以及我们所说的这个概念 使用示例或链接帮助我解决这两个问题 提前谢谢。简单地说 分组依据将相似值分组(删除重复项)排序依据指定结果中所需的数据顺序 例如: 假设,如果该表包含: id name mark 1 Jacob 50 2
groupby
和orderby
谁能帮我举个例子吗
问题2)类似这样的示例查询
例如:-从名称A中选择A.sno、A.sname代码>
查询结果如下所示
从名称中选择sno、sname代码>
这就是为什么我们使用A
和这个点A.
以及我们所说的这个概念
使用示例或链接帮助我解决这两个问题
提前谢谢。简单地说
分组依据
将相似值分组(删除重复项)<代码>排序依据
指定结果中所需的数据顺序
例如:
假设,如果该表包含:
id name mark
1 Jacob 50
2 Mary 60
3 Amanda 30
然后,select*from tableName order by mark
给出结果:
id name mark
3 Amanda 30
1 Jacob 50
2 Mary 60
在名称A
中,为了方便起见,我们提供了一个别名(或更短的名称)。当您连接多个表时,它可能很有用
对,你不应该把这两个搞混
1) 分组依据
将根据您指定的列对结果进行分组
例如:
SELECT Name, surname FROM CONTACT GROUP BY Surname
SELECT A.Name, cellphone from Contact A order by Name
SELECT A.Name AS CustomerName, C.Name AS Company
FROM Contact A
JOIN Company C on C.contactid = A.contactid
将导致具有相同姓氏的联系人分组(所有史密斯等)
orderby
只需按指定列排序(字符排序从a-z开始,整数排序从1-9999开始)
例如:
SELECT Name, surname FROM CONTACT GROUP BY Surname
SELECT A.Name, cellphone from Contact A order by Name
SELECT A.Name AS CustomerName, C.Name AS Company
FROM Contact A
JOIN Company C on C.contactid = A.contactid
将根据名称按字母顺序排列结果(顺便说一句,添加DESC
将以降序方式反转结果,ASC
默认为升序)
2) 然后,您询问了别名,这使您能够为表名或列指定自己的别名,并在从该表中选择列时重新使用它。对于长表名或出现类似列名时,它的用处是多个表名
例如:
SELECT Name, surname FROM CONTACT GROUP BY Surname
SELECT A.Name, cellphone from Contact A order by Name
SELECT A.Name AS CustomerName, C.Name AS Company
FROM Contact A
JOIN Company C on C.contactid = A.contactid
(我已经为contact表创建了别名,分别为A、CompanyC,并将这两个表中的类似列重新命名为customername、Company)
这有帮助吗?GroupBy是一个积分函数,在GroupBy之后,您可以得到总和
OrderBy只是一个简单的函数,您仍然可以得到以前查询过的结果,但它们是按您的选择“排序”的。排序方式:按特定顺序检索数据,即按所述列排序。排序分为升序和降序。默认值为升序
Group By:是selectexpression的一部分,它根据所提到的列将结果划分为子集。在问题1中,Group By是将具有相同值的字段分组。它在数东西时很有用。例如,表名为“Table1”:
-----
|id |
-----
|1 |
-----
|1 |
-----
|2 |
-----
使用此查询:
SELECT id, COUNT(id) AS `count` FROM Table1 GROUP BY id
这将导致:
------------
|id |count |
------------
|1 |2 |
------------
|2 |1 |
------------
关于Order By,它只是按顺序对数据进行排序。假设您有一个名为“Table2”的表:
------------
| Alphabet |
------------
| C |
------------
| A |
------------
| D |
------------
| B |
------------
`SELECT * FROM Table2 ORDER BY Alphabet` will result to:
在问题2中,“A”是表名的别名。如果您必须连接这么多表(尤其是如果它们的名称很长的话),这将非常有用。因此,不是:
SELECT Table1.*, Table2.* FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id
你必须这样做:
SELECT A.*, B.* FROM Table1 A INNER JOIN Table2 B ON A.id = B.id
您只需键入一次真正的表名,并在条件中使用它们的别名。想象一下,如果您必须在不使用alias的情况下连接3个或更多表,这会很麻烦。在本例中,确定是!