Mysql 我对leetcodesql问题1174的解决方案。带有CTE和窗口功能的即时食品配送II始终显示语法错误
此问题的链接如下: 我的解决方案如下,带有CTE和窗口功能。我尝试了mysql和oracle,但都不起作用,而且都显示出语法错误。不知道为什么Mysql 我对leetcodesql问题1174的解决方案。带有CTE和窗口功能的即时食品配送II始终显示语法错误,mysql,sql,oracle,Mysql,Sql,Oracle,此问题的链接如下: 我的解决方案如下,带有CTE和窗口功能。我尝试了mysql和oracle,但都不起作用,而且都显示出语法错误。不知道为什么 with rank as ( select customer_id, order_date, customer_pref_delivery_date, rank() over (partition by customer_id order by order_date asc) as
with rank as
(
select
customer_id,
order_date,
customer_pref_delivery_date,
rank() over (partition by customer_id order by order_date asc) as rnk
from
delivery
)
select
round(avg(f),2) as immediate_percentage
from
(select
case
when order_date = customer_pref_delivery_date
then 1 else 0
end as f
from
rank
where
rnk = 1) as first_orders;
Oracle错误:
错误:ORA-00933:SQL命令未正确结束
Mysql错误:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用near'rank as的正确语法
(选择
客户识别码,
订单日期:,
客户优先交货日期,
第3行的秩()大于'
对于oracle错误,您必须删除第一批订单之前的“AS”,因为“AS”不能位于“FROM”关键字之后
您得到的错误是什么?您好,上面写着“ORA-00933:SQL命令未正确结束”在Oracle中。我在问题中粘贴了一个在MySQL中的长版本。Oracle不支持将
用作表别名。MySQL最近才添加了对窗口函数的支持,您可能正在使用过时的版本。我在Oracle中删除了列别名,这很有效!谢谢!
SELECT ROUND (AVG (F), 2) AS IMMEDIATE_PERCENTAGE
FROM (SELECT CASE
WHEN ORDER_DATE = CUSTOMER_PREF_DELIVERY_DATE THEN 1
ELSE 0
END
AS F
FROM RANK
WHERE RNK = 1) FIRST_ORDERS;