Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中Orderby和GroupBy的区别_Sql_Oracle - Fatal编程技术网

SQL中Orderby和GroupBy的区别

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

问题1)我浏览了许多网站,无法理解
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,并将这两个表中的类似列重新命名为customernameCompany


    这有帮助吗?

    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个或更多表,这会很麻烦。

    在本例中,确定是!