Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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_Datatable_Aggregate Functions_Window Functions_Presto - Fatal编程技术网

SQL窗口函数,用于在订单级别查找每个客户的第二高订单日期

SQL窗口函数,用于在订单级别查找每个客户的第二高订单日期,sql,datatable,aggregate-functions,window-functions,presto,Sql,Datatable,Aggregate Functions,Window Functions,Presto,我有一个包含以下字段的表: | order_id | order_date | customer_id | second_highest_order_date_of_the_customer | 12345 | 2020-11-01 | customer_ABC | 2020-05-01 | 67891 | 2020-05-01 | customer_ABC | 2020-02-01 | 00531 | 2020-02-01 | customer_ABC |

我有一个包含以下字段的表:

| order_id  | order_date  | customer_id  | second_highest_order_date_of_the_customer
| 12345     | 2020-11-01  | customer_ABC | 2020-05-01
| 67891     | 2020-05-01  | customer_ABC | 2020-02-01
| 00531     | 2020-02-01  | customer_ABC | 2020-01-01
| 00789     | 2020-01-01  | customer_ABC | 
我发现很难计算SQL中客户列的第二高订单日期。 我可以使用窗口函数计算每个客户的第二个最高日期,但我很难找到订单级别的第二个最高日期,该日期不应超过上述行中的订单日期

非常感谢您提供的任何帮助

窗口功能满足您的需要:

select t.*,
       nth_value(order_date, 2) over (partition by customer_id order by order_date desc) as penultimate_order_date
from t;
如果英语不是您的第一语言,倒数第二个是一个漂亮的单词,意思是“序列中倒数第二个”。

窗口功能可以满足您的需要:

select t.*,
       nth_value(order_date, 2) over (partition by customer_id order by order_date desc) as penultimate_order_date
from t;

如果英语不是你的第一语言,倒数第二个是一个漂亮的词,意思是“序列中倒数第二个”。

谢谢你的回答。我的数据库有重复的订单ID和订单日期(每购买一件商品1个)。有可能得到下一个最近的日期吗?我正在尝试在订单级别获得第二个最近的日期。在订单ID为00531的第三个条目的原始示例中,我需要计算列提供“2020-01-01”,因为这是客户_ABC当时订购的第二个最新日期。但您的代码告诉我2020-02-01,这是该客户的第二个最新购买日期。如果您需要任何其他信息,请告诉我。再次感谢您的帮助谢谢您的回复。我的数据库有重复的订单ID和订单日期(每购买一件商品1个)。有可能得到下一个最近的日期吗?我正在尝试在订单级别获得第二个最近的日期。在订单ID为00531的第三个条目的原始示例中,我需要计算列提供“2020-01-01”,因为这是客户_ABC当时订购的第二个最新日期。但您的代码告诉我2020-02-01,这是该客户的第二个最新购买日期。如果您需要任何其他信息,请告诉我。再次感谢你的帮助