Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Mysql 在每日销售数据库中添加包含昨天销售信息的列_Mysql_Sql_Apache Spark Sql - Fatal编程技术网

Mysql 在每日销售数据库中添加包含昨天销售信息的列

Mysql 在每日销售数据库中添加包含昨天销售信息的列,mysql,sql,apache-spark-sql,Mysql,Sql,Apache Spark Sql,我正在使用一个包含不同产品和商店的每日销售信息的数据库 StoreSku Date UnitsSale A-2134 20/04/2019 2 A-2135 20/04/2019 1 A-2134 19/04/2019 5 A-2134 18/04/2019 3 A-2135 19/04/2019 6 我想添加一列,其中包含一天前的单位销售信息 StoreSku Date Uni

我正在使用一个包含不同产品和商店的每日销售信息的数据库

StoreSku  Date         UnitsSale
 A-2134   20/04/2019      2
 A-2135   20/04/2019      1
 A-2134   19/04/2019      5
 A-2134   18/04/2019      3
 A-2135   19/04/2019      6
我想添加一列,其中包含一天前的单位销售信息

StoreSku  Date         UnitsSale    OneDaySales
 A-2134   20/04/2019      2             5
 A-2135   20/04/2019      1             6
 A-2134   19/04/2019      5             3
 A-2134   18/04/2019      3            NULL
 A-2135   19/04/2019      6            NULL

老实说,我不知道sql是否能做到这一点。如果没有,你能推荐一种方法吗?考虑到有超过数千条记录。

您可能正在寻找滞后:

或者,您可以将左连接与日期算术结合使用。这因数据库而异,但标准是:

select t.*, tprev.UnitsSale as prev_unitssale
from t left join
     t tprev
     on tprev.StoreSku = t.StoreSku and
        tprev.Date = t.date - interval '1 day';

这些并不完全相同。第一个将获取数据中的前一天。第二个查询是前一天的查询,在缺少几天之后的第二天为NULL。

对于数据库引擎,我有一点自由:可以是mysql、spark sql、microsoft sql等。这两个查询都很好,但我会选择第二个查询,因为有些产品在几天内没有销售。你能在第二个问题中再详细说明一下吗?我不明白你是如何得到tprev表的数据的,我得到了很多列中都有null的行,所以我认为这与连接语句有关。@BenJ。那可能是一天之后所有商店都关门的日子——比如假期。如果是这样的话,只有rev|u unitssale是空的,而不是整排,对吧?它不起作用:| a-1102767 | 02-12-2018 | 2 | Null | a-1102767 | 03-12-2018 | 1 | Null | BenJ。如果表本身中的值为NULL,则只会在与左联接中的第一个表关联的列中获得NULL。
select t.*, tprev.UnitsSale as prev_unitssale
from t left join
     t tprev
     on tprev.StoreSku = t.StoreSku and
        tprev.Date = t.date - interval '1 day';