Sql 如何修复此查询?
我正在尝试选择过去一周中每天都挂起的票证。我有此查询并得到以下错误:ORA-00935:组函数嵌套太深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
问题在于订单条款。我不知道您为什么要使用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