Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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_Sql Order By_Aggregate Functions - Fatal编程技术网

Sql 如何修复此查询?

Sql 如何修复此查询?,sql,oracle,sql-order-by,aggregate-functions,Sql,Oracle,Sql Order By,Aggregate Functions,我正在尝试选择过去一周中每天都挂起的票证。我有此查询并得到以下错误:ORA-00935:组函数嵌套太深 问题在于订单条款。我不知道您为什么要使用MinUpdate_AT,但请调查它以解决您的问题。如果您希望按升序排序,只需使用 ORDER BY UPDATED_AT ASC 如评论和其他回答中所述,您正面临ORDER BY的问题 尝试使用以下技巧将结果从周一排序到周五 SELECT TO_CHAR(UPDATED_AT, 'day') AS WEEK_DAY, COUNT(ID

我正在尝试选择过去一周中每天都挂起的票证。我有此查询并得到以下错误:ORA-00935:组函数嵌套太深


问题在于订单条款。我不知道您为什么要使用MinUpdate_AT,但请调查它以解决您的问题。如果您希望按升序排序,只需使用

ORDER BY UPDATED_AT ASC

如评论和其他回答中所述,您正面临ORDER BY的问题

尝试使用以下技巧将结果从周一排序到周五

SELECT TO_CHAR(UPDATED_AT, 'day') AS WEEK_DAY, 
       COUNT(ID) AS UPDATED_AT, 
       MIN(UPDATED_AT) AS M_UPDATE_DATE -- ADDED THIS AND GAVE IT ALIAS
  FROM freshdesk_api
 WHERE UPDATED_AT >= TRUNC(SYSDATE, 'iw')
   AND UPDATED_AT < TRUNC(SYSDATE, 'iw') + 7
   AND STATUS IN (3)
 GROUP BY TO_CHAR(UPDATED_AT, 'day')
 ORDER BY M_UPDATE_DATE; -- USED ALIAS NAME HERE

您可能希望按一周中的某一天而不是按每天的行数对行进行排序

但是,您正在使用与日期列相同的名称对计数进行别名,这会导致歧义。使用不同的别名-更新的\u AT对计数没有任何意义:

SELECT TO_CHAR(UPDATED_AT, 'day') AS WEEK_DAY, COUNT(*) AS CNT --> here
  FROM freshdesk_api
 WHERE UPDATED_AT >= TRUNC(SYSDATE, 'iw')
   AND UPDATED_AT < TRUNC(SYSDATE, 'iw') + 7
   AND STATUS = 3
 GROUP BY TO_CHAR(UPDATED_AT, 'day')
 ORDER BY MIN(UPDATED_AT)
注:

假设id不可为null,count*与countid等价,效率更高

3中的状态是更简单的措辞状态=3


我看不出有什么问题。但是,如果您从查询中删除按分钟更新的顺序,您能分享一下结果吗?是的,这似乎是问题所在。问题是,使用与数据中的列相同的名称调用计数。
SELECT TO_CHAR(UPDATED_AT, 'day') AS WEEK_DAY, COUNT(*) AS CNT --> here
  FROM freshdesk_api
 WHERE UPDATED_AT >= TRUNC(SYSDATE, 'iw')
   AND UPDATED_AT < TRUNC(SYSDATE, 'iw') + 7
   AND STATUS = 3
 GROUP BY TO_CHAR(UPDATED_AT, 'day')
 ORDER BY MIN(UPDATED_AT)
SELECT TO_CHAR(UPDATED_AT, 'day') AS WEEK_DAY, COUNT(*) AS UPDATED_AT
  FROM freshdesk_api f                     --> table alias
 WHERE UPDATED_AT >= TRUNC(SYSDATE, 'iw')
   AND UPDATED_AT < TRUNC(SYSDATE, 'iw') + 7
   AND STATUS = 3
 GROUP BY TO_CHAR(UPDATED_AT, 'day')
 ORDER BY MIN(f.UPDATED_AT)                --> prefixed column name