gpt4 book ai didi

database - ORA-00904 : "TOTAL_ORDERS": invalid identifier

转载 作者:搜寻专家 更新时间:2023-10-30 21:56:23 26 4
gpt4 key购买 nike

我目前正在尝试计算每个郊区的订单,这些订单的交付时间比要求的时间晚了一个月,以及它们的平均延迟时间。

到目前为止,我在没有参数查询的情况下完成了此操作,让用户输入他们希望看到的月份。

SELECT s.suburbname, 
Count(*) AS total_orders ,
("ORDER".ACTUALTIMEDELIVERED - "ORDER".CUSTREQTIME)/total_orders AS latetime
FROM "ORDER"
left join restaurant r
ON "ORDER".restaurantid = r.restaurantid
left join suburb s
ON r.suburbid = s.suburbid
WHERE "ORDER".deliveredflag = 'X'
AND "ORDER".ACTUALTIMEDELIVERED > "ORDER".CUSTREQTIME
GROUP BY s.suburbname
ORDER BY total_orders, latetime;

但是它向我抛出一个 ORA-00904:“TOTAL_ORDERS”:无效标识符。

是我的group by子句吗?

更新 1 我已经解决了,谢谢大家!但是现在我有一个不同的问题。我似乎无法对 INTERVAL DAY TO SECOND 数据类型求和,因为它抛出错误:ORA-00932:不一致的数据类型:预期 NUMBER 得到 INTERVAL DAY TO SECOND。

有没有办法把所有的时间差相加并取平均值?

更新 2

我已经设法通过使用 EXTRACT 函数提取小时和分钟并将所有它们加在一起计算来解决我的所有问题。

SELECT 

s.suburbname,
Count(*) AS total_orders,

SUM(60*(Extract(hour from "ORDER".ACTUALTIMEDELIVERED) - Extract(hour from "ORDER".Custreqtime)) + Extract(minute from "ORDER".ACTUALTIMEDELIVERED) - Extract(minute from "ORDER".Custreqtime))as amt


FROM "ORDER"
left join restaurant r
ON "ORDER".restaurantid = r.restaurantid
left join suburb s
ON r.suburbid = s.suburbid
WHERE
"ORDER".deliveredflag = 'X'
AND
"ORDER".ACTUALTIMEDELIVERED > "ORDER".CUSTREQTIME
GROUP BY s.suburbname
ORDER BY s.suburbname desc;

最佳答案

您不能在计算中重复使用 total_orders:

 SELECT s.suburbname, Count(*) total_orders ,
("ORDER".ACTUALTIMEDELIVERED - "ORDER".CUSTREQTIME)/count(*) latetime
FROM "ORDER"
left join restaurant r
...

希望对你有帮助

关于database - ORA-00904 : "TOTAL_ORDERS": invalid identifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45274481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com