【发布时间】:2020-12-10 22:09:17
【问题描述】:
我有一张包含以下信息的表格:
CREATE TABLE A (
ID int,
start_date varchar(255),
effdate varchar(255),
enddate varchar(255),
lead_effdate varchar(255),
value varchar(255),
source varchar(255),
lead_source varchar(255)
);
INSERT INTO A
VALUES (1,"12/01/2013","12/01/2013","30/07/2014","31/07/2014",4,"REM","REM"),
(1,"31/07/2014","31/07/2014","04/09/2014","12/09/2014",4,"REM","REM"),
(1,"12/09/2014","12/09/2014","12/04/2015","13/04/2015",4,"REM","REM"),
(1,"13/04/2015","13/04/2015","01/01/2016","02/01/2016",4,"REM","REM"),
(1,"02/01/2016","02/01/2016","11/03/2016","13/03/2016",4,"REM","REM"),
(1,"13/03/2016","13/03/2016","22/04/2017","10/07/2016",4,"REM","GS"),
(1,"10/07/2016","10/07/2016",null,"23/04/2017",4,"GS","REM"),
(1,"23/04/2017","23/04/2017","05/05/2018","06/05/2018",4,"REM","REM"),
(1,"06/05/2018","06/05/2018","09/11/2019","10/11/2019",4,"REM","REM"),
(1,"10/11/2019","10/11/2019",null,null,4,"REM",null);
select * from A
order by start_date
我想删除从 source = GS 到表中最低行的所有行。如您所见,顺序由 start_date 给出。
我尝试使用 row_number() over(partition by... 在 GS 周围创建负值和正值,但我无法计算此索引。您将如何解决?
【问题讨论】:
-
数据没有意义,varchar 必须用引号括起来,也总是将日期保存为日期而不是 varchar 并在您仅选择它时对其进行格式化
-
all rows from source = GS to the bottom?你说的是什么顺序?所有带有source >= 'GS'的行? -
那不是有效的 SQL。提示:日期值使用
DATE类型,编码为ISO-8601 format,如YYYY-MM-DD。 -
提示:
12/01/2013的结果是什么?考虑SELECT 12/01/2013。 -
对桌子感到抱歉。我更正了这些值,它现在应该可以工作了。
标签: date pyspark apache-spark-sql databricks