Sql 我试图返回一个查询,该查询将给出所有用户的倒数第二个交货日期
我正在使用databricks数据库,我必须编写一个查询,返回所有用户倒数第二个订单的交货日期(因此倒数第二个交货日期)。我有所有用户的历史交货日期,但我只对所有用户的倒数第二个交货日期感兴趣 我将试着用一个简化的例子来引导你们完成我想要完成的事情 当我为一个用户运行下面的代码时Sql 我试图返回一个查询,该查询将给出所有用户的倒数第二个交货日期,sql,apache-spark,databricks,Sql,Apache Spark,Databricks,我正在使用databricks数据库,我必须编写一个查询,返回所有用户倒数第二个订单的交货日期(因此倒数第二个交货日期)。我有所有用户的历史交货日期,但我只对所有用户的倒数第二个交货日期感兴趣 我将试着用一个简化的例子来引导你们完成我想要完成的事情 当我为一个用户运行下面的代码时 SELECT delivery_date_local FROM order.orders WHERE lower(customer_login_visits) = '<my-email-here>@gma
SELECT delivery_date_local
FROM order.orders
WHERE lower(customer_login_visits) = '<my-email-here>@gmail.com'
我想要的是该用户(以及所有其他用户)的倒数第二个交货日期,在本例中为2019-03-22,但如果用户在同一天没有多个订单,则会有所不同
这是我正在运行的查询,以获得所需的结果
但我收到以下错误:
SQL语句中出错:ParseException:预期输入“来自”不匹配(第5行,位置0) 我在网上读过各种帖子,并尝试过不同的查询,但似乎没有任何效果。我想你想要:
SELECT o.*
FROM (SELECT o.*,
DENSE_RANK() OVER (PARTITION BY customer_login_visits ORDER BY Delivery_date_local
描述)作为seqnum
从命令
)o
其中,seqnum=2
这实际上返回倒数第二天的所有订单。如果只需要日期,请使用“选择不同的:
SELECT DISTINCT customer_login_visits, Delivery_date_local
FROM (SELECT o.*,
DENSE_RANK() OVER (PARTITION BY customer_login_visits ORDER BY Delivery_date_local DESC) as seqnum
FROM order.orders o
) o
WHERE seqnum = 2;
我想你想要:
SELECT o.*
FROM (SELECT o.*,
DENSE_RANK() OVER (PARTITION BY customer_login_visits ORDER BY Delivery_date_local
描述)作为seqnum
从命令
)o
其中,seqnum=2
这实际上返回倒数第二天的所有订单。如果只需要日期,请使用“选择不同的:
SELECT DISTINCT customer_login_visits, Delivery_date_local
FROM (SELECT o.*,
DENSE_RANK() OVER (PARTITION BY customer_login_visits ORDER BY Delivery_date_local DESC) as seqnum
FROM order.orders o
) o
WHERE seqnum = 2;
如果您使用的是
densite_RANK
,它会将这三个不同的日期分组为三个序列号;1, 2, 3. 如果你想得到第22名作为答案,那么试着使用行号
,例如:
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER( PARTITION BY customer_login_visits ORDER BY delivery_date_local DESC ) AS seqnum,
customer_login_visits,
delivery_date_local
FROM order.orders
)
WHERE seqnum = 2
如果您使用的是
densite_RANK
,它会将这三个不同的日期分组为三个序列号;1, 2, 3. 如果你想得到第22名作为答案,那么试着使用行号
,例如:
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER( PARTITION BY customer_login_visits ORDER BY delivery_date_local DESC ) AS seqnum,
customer_login_visits,
delivery_date_local
FROM order.orders
)
WHERE seqnum = 2
非常感谢@Gordon Linoff。成功了。我要做的唯一一件事就是根据wBob给出的理由,将densite_RANK()改为ROW_NUMBER。非常感谢@Gordon Linoff。成功了。根据wBob给出的理由,我唯一要做的就是将densite_RANK()更改为ROW_NUMBER。非常感谢您提出的将densite_RANK更改为ROW_RANK的建议。你是对的。你会考虑把这个标记为答案还是需要额外的建议?谢谢一百万关于改变DeNeSyRead到RooQueRead的建议。你是对的。你会考虑把这个标记为答案还是需要额外的建议?