SQL中Orderby和GroupBy的区别

时间:2015-06-10 07:06:20

标签: sql oracle

问题1)我浏览了很多网站,无法理解Group byOrder by之间的明显区别 任何人都可以帮我一个例子

问题2)像这样的查询示例

例如: - select A.sno , A.sname from Names A;  结果与下面的查询相同 select sno , sname from Names ;

这里为什么我们使用A和点A.以及我们称之为概念

使用示例或链接帮助我解决这两个问题 在此先感谢。

5 个答案:

答案 0 :(得分:3)

简单来说,

  1. GROUP BY对相似值进行分组(删除重复项)。 ORDER BY指定结果中所需的数据顺序。

    <强>例如

    假设,如果表包含:

    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
    
  2. Names A中,我们提供别名(或更短名称)以便于使用。当您加入多个表时,它可能很有用。

答案 1 :(得分:2)

在问题1中,分组依据是对具有相同值的字段进行分组。它在计算某些东西时很有用。对于Instance,您有此表名'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:
| Alphabet |
------------
| A        |
------------
| B        |
------------
| C        |
------------
| D        |
------------

在您的问题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

您只需键入一次真实的表名,并在条件中使用别名。想象一下,如果你不使用别名就必须加入3个或更多的表 - 这很麻烦。

答案 2 :(得分:1)

你应该不要混淆两者。

1)GROUP BY会将您的结果与您指定的列分组

示例:

SELECT Name, surname FROM CONTACT GROUP BY Surname

将导致与相同姓氏的联系人被分组(所有铁匠一起等)

ORDER BY将按指定的列排序(从a-z开始进行字符排序,或者1-9999用于整数)

示例:

SELECT A.Name, cellphone  from Contact A order by Name 

将根据名称按字母顺序排序结果(BTW添加DESC将以降序方式反转结果,默认情况下隐含升序ASC

2)然后您询问了别名,这使您能够为表名或列提供您自己的别名,并在从该表中选择对长表名称有用的列时或在出现类似列名时是多表时重新使用它名。

示例:

SELECT A.Name AS CustomerName, C.Name AS Company
FROM Contact A
JOIN Company C on C.contactid = A.contactid

(我已经为表格联系创建了别名 A ,公司 C ,并将两个表中的类似列重新命名为别名客户名公司

这有帮助吗?

答案 3 :(得分:1)

ORDER BY:按特定顺序检索数据意味着对提到的列进行排序。排序的升序和降序。默认值为升序。

分组依据:根据所提到的列,选择表达的部分是否将结果划分为子集。

答案 4 :(得分:0)

GroupBy是一个集成函数,在分组之后,你得到总和金额。

OrderBy只是简单的功能,您仍然可以获得之前查询过的结果,但是您可以根据自己的选择对它们进行“排序”。

相关问题