Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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中的计数_Sql_Oracle - Fatal编程技术网

递增sql中的计数

递增sql中的计数,sql,oracle,Sql,Oracle,我目前正在为我的SQL类做一个作业,我遇到了一点小麻烦。作业的一部分要求“计算当前存在的订单数量,并从最近的订单日期开始按降序列出所有订单数据。”我可以使用计数功能,也可以单独显示所有数据。当我尝试将所有代码一起运行查询时,它会显示所有数据,但对于计数,当计数应等于9时,它会显示9行1。 代码 这就是分组的诀窍;若要计算,您需要丢失细节,但如果您试图通过将组拆分为更小的块来恢复细节,则每个组中的项目就不再那么多 这意味着您必须有两个查询,一个用于分组,另一个用于提供详细信息,然后将它们连接在一起

我目前正在为我的SQL类做一个作业,我遇到了一点小麻烦。作业的一部分要求“计算当前存在的订单数量,并从最近的订单日期开始按降序列出所有订单数据。”我可以使用计数功能,也可以单独显示所有数据。当我尝试将所有代码一起运行查询时,它会显示所有数据,但对于计数,当计数应等于9时,它会显示9行1。 代码


这就是分组的诀窍;若要计算,您需要丢失细节,但如果您试图通过将组拆分为更小的块来恢复细节,则每个组中的项目就不再那么多

这意味着您必须有两个查询,一个用于分组,另一个用于提供详细信息,然后将它们连接在一起:

SELECT * 
FROM
  orders o
  INNER JOIN
  (SELECT count(*) as ct FROM orders GROUP BY customer_number) g
  ON o.customer_number = g.customer_number
或者您可以使用一个分析函数,它在概念上做同样的事情,但更高级一些(可能还没有教过):

注;我不知道你到底想在哪些栏目上进行统计和分组;我在这里选择了客户编号,因为我知道它的存在——这些查询将给出每个客户的订单数量以及订单的所有细节。使用GROUPBY的基本技巧是确定要计算每个唯一变量的某些列(例如,如果您想知道每个部门有多少名员工需要按部门id分组,因为如果有50名员工平均分配到10个部门,则“部门id”列中应该有10个不同的if数字,每个数字重复5次-group BY将生成一个10行的结果集,每个不同的部门id和id对应一行。)计数每行将产生5,因为这是以前折叠为一行的行数)

如果要统计系统中的所有订单,可以执行以下操作:

SELECT * 
FROM
  orders o
  CROSS JOIN
  (SELECT count(*) as ct FROM orders) g
我们必须在这里使用交叉连接,因为我们已经没有任何列要连接了——子查询只计算一个结果,我们希望它出现在每一行上,这就是交叉连接的作用:将左侧的每一行与右侧的每一行连接起来

SELECT 
  o.*,
  COUNT(*) OVER() as ct
FROM
  orders o

还请注意,您的作业要求按特定顺序输出行。我没有完成这部分,但我将把它作为练习留给您-不要忘记,因为它是规范的一部分,并且将被标记为

,这是分组的诀窍;要统计数据,您需要丢失详细信息,但如果您试图恢复详细信息通过将组分成更小的块,每个组中的项目就不再那么多了

这意味着您必须有两个查询,一个用于分组,另一个用于提供详细信息,然后将它们连接在一起:

SELECT * 
FROM
  orders o
  INNER JOIN
  (SELECT count(*) as ct FROM orders GROUP BY customer_number) g
  ON o.customer_number = g.customer_number
或者您可以使用一个分析函数,它在概念上做同样的事情,但更高级一些(可能还没有教过):

注意:我不知道您真正想要统计和分组的列是什么;我在这里选择customer number是因为我知道它的存在-这些查询将给出每个客户的订单数量以及订单的所有细节。使用group BY的基本技巧是确定要统计每个客户的唯一变化的一些列(例如,如果您想知道每个部门有多少名员工需要按部门id分组,因为如果有50名员工平均分配到10个部门,则“部门id”列中应该有10个不同的if数字,每个数字重复5次-group BY将生成一个10行的结果集,每个不同的部门id和id对应一行。)计数每行将产生5,因为这是以前折叠为一行的行数)

如果要统计系统中的所有订单,可以执行以下操作:

SELECT * 
FROM
  orders o
  CROSS JOIN
  (SELECT count(*) as ct FROM orders) g
我们必须在这里使用交叉连接,因为我们已经没有任何列要连接了——子查询只计算一个结果,我们希望它出现在每一行上,这就是交叉连接的作用:将左侧的每一行与右侧的每一行连接起来

SELECT 
  o.*,
  COUNT(*) OVER() as ct
FROM
  orders o

还请注意,您的作业要求按特定顺序输出行。我没有完成这一部分,但我将把它作为练习留给您-不要忘记它,因为它是规范的一部分,将被标记为

使用“count(*)order\u NUMBER”而不是您正在使用的

使用“count(*)order\u NUMBER”除了您正在使用的内容之外,还请共享预期的输出!!当您根据订单号对结果进行分组时,您的计数将始终为1,也可以从选择的
计数(订单号)中删除
订单号
,订单号,订单日期,客户号
,但不包括计数!并按订单号,订单日期,客户号从组中删除订单号。我没有预期输出的图片,因为教授没有提供。从作业的措辞来看,他似乎在寻找行的总计数,然后希望表中的所有数据按降序列出。请共享预期的输出!!当您根据订单号对结果进行分组时,您的计数将始终为1。另外,请从选择
计数(订单号)中删除
订单号
,订单号,订单日期,客户号
,但不包括计数!并按订单号,订单日期,客户号从组中删除订单号。我没有预期输出的图片,因为教授没有提供。从作业的措辞来看,他似乎在寻找行的总计数,然后希望表中的所有数据按降序列出