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的一部分。