Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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 如何在以下场景中使用Oracle Group BY_Sql_Oracle_Group By - Fatal编程技术网

Sql 如何在以下场景中使用Oracle Group BY

Sql 如何在以下场景中使用Oracle Group BY,sql,oracle,group-by,Sql,Oracle,Group By,下面是一个非常基本的场景 我发现很难理解groupby是如何工作的,即使在阅读了很多示例之后 在下面的场景中,我需要获取日期的最小值,并需要将查询1转换为查询2 问题1: SELECT b.aper07_req_created_s, b.aper06_req_status_k, a.aper06_req_status_x FROM iaper07_employee_offbrd_req b, iaper06_req_status a WHERE a

下面是一个非常基本的场景

我发现很难理解
groupby
是如何工作的,即使在阅读了很多示例之后

在下面的场景中,我需要获取日期的最小值,并需要将查询1转换为查询2

问题1:

SELECT b.aper07_req_created_s,
       b.aper06_req_status_k,
       a.aper06_req_status_x
FROM   iaper07_employee_offbrd_req b,
       iaper06_req_status a
WHERE  a.aper06_req_status_k = b.aper06_req_status_k
       AND b.aper07_req_k = 3387
       AND b.aper06_req_status_k = 4
ORDER  BY b.aper07_req_created_s 
问题2:

SELECT Min(b.aper07_req_created_s),
       b.aper06_req_status_k,
       a.aper06_req_status_x
FROM   iaper07_employee_offbrd_req b,
       iaper06_req_status a
WHERE  a.aper06_req_status_k = b.aper06_req_status_k
       AND b.aper07_req_k = 3387
       AND b.aper06_req_status_k = 4
GROUP  BY b.aper06_req_status_k,
          a.aper06_req_status_x
ORDER  BY b.aper07_req_created_s 
查询2无法声明其不是group by表达式


有谁能帮我理解如何正确地进行第二次查询并给出一些解释吗?

在您的查询2中,
ORDER BY
子句无效

分组依据
之后(因此,在
具有
排序依据
选择
部分中),表达式必须基于分组依据列、常量或其他列的聚合函数


您可以使用
orderbymin(b.aper07\u req\u created\u s)

在查询2中,
orderby
子句无效

分组依据
之后(因此,在
具有
排序依据
选择
部分中),表达式必须基于分组依据列、常量或其他列的聚合函数


您可以使用
orderbymin(b.aper07\u req\u created\s)

您的问题可能是
orderbyb.aper07\u req\u created\s
,尝试将其替换为:

按最小值排序的订单(b.07需求创建):

1号命令:

 SELECT Min(b.aper07_req_created_s),
           b.aper06_req_status_k,
           a.aper06_req_status_x
    FROM   iaper07_employee_offbrd_req b,
           iaper06_req_status a
    WHERE  a.aper06_req_status_k = b.aper06_req_status_k
           AND b.aper07_req_k = 3387
           AND b.aper06_req_status_k = 4
    GROUP  BY b.aper06_req_status_k,
              a.aper06_req_status_x
    ORDER  BY 1
您还可以选择使用别名:

    SELECT Min(b.aper07_req_created_s) minemp,
           b.aper06_req_status_k,
           a.aper06_req_status_x
    FROM   iaper07_employee_offbrd_req b,
           iaper06_req_status a
    WHERE  a.aper06_req_status_k = b.aper06_req_status_k
           AND b.aper07_req_k = 3387
           AND b.aper06_req_status_k = 4
    GROUP  BY b.aper06_req_status_k,
              a.aper06_req_status_x
    ORDER  BY minemp

您可以找到更多信息。

您的问题可能是b.aper07\U req\U created\U s订购的问题,请尝试将其替换为:

按最小值排序的订单(b.07需求创建):

1号命令:

 SELECT Min(b.aper07_req_created_s),
           b.aper06_req_status_k,
           a.aper06_req_status_x
    FROM   iaper07_employee_offbrd_req b,
           iaper06_req_status a
    WHERE  a.aper06_req_status_k = b.aper06_req_status_k
           AND b.aper07_req_k = 3387
           AND b.aper06_req_status_k = 4
    GROUP  BY b.aper06_req_status_k,
              a.aper06_req_status_x
    ORDER  BY 1
您还可以选择使用别名:

    SELECT Min(b.aper07_req_created_s) minemp,
           b.aper06_req_status_k,
           a.aper06_req_status_x
    FROM   iaper07_employee_offbrd_req b,
           iaper06_req_status a
    WHERE  a.aper06_req_status_k = b.aper06_req_status_k
           AND b.aper07_req_k = 3387
           AND b.aper06_req_status_k = 4
    GROUP  BY b.aper06_req_status_k,
              a.aper06_req_status_x
    ORDER  BY minemp

您可以找到更多信息。

试图解释
分组方式在SQL中的工作原理:
(我想说)它的工作原理与您期望的工作原理完全相同。
如果您有一篮水果,并且希望通过分组类型获得所有水果的计数,您可以执行以下操作:

SELECT groupingType, count(groupingType)
FROM fruitBasket
GROUP BY groupingType

如果您使用水果类型(苹果、梨…)作为分组类型,那么您将无法在结果中获得水果颜色,因为它们(苹果、梨…)可能具有不同的颜色。同样,如果您按颜色分组,您将无法获得水果类型…

尝试解释
按颜色分组在SQL中的工作原理:
(我想说)它的工作原理与您期望的工作原理完全相同。
如果您有一篮水果,并且希望通过分组类型获得所有水果的计数,您可以执行以下操作:

SELECT groupingType, count(groupingType)
FROM fruitBasket
GROUP BY groupingType

如果您使用水果类型(苹果、梨…)作为分组类型,那么您将无法在结果中获得水果颜色,因为它们(苹果、梨…)可能具有不同的颜色。同样,如果按颜色分组,则无法获得水果类型…

能否将SQL标记为代码,并将其拆分为多行?表示很重要,它将使它更具可读性(因此任何想要帮助您的人都更容易理解),您可以将SQL标记为代码,并将其拆分为多行吗?演示很重要,它将使其更具可读性(因此任何想帮助您的人都更容易理解),现在我发现我必须在have中包含“和b.aper06_请求_状态_k=4”,因为此列是group by的一部分。现在我还发现我必须包含“和b.aper06_请求_状态_k=4”本栏是group by的一部分。