计算不同时间戳下每种产品的数量差异

美智

DB提琴

CREATE TABLE sales (
    id int auto_increment primary key,
    time_stamp DATE,
    product VARCHAR(255),
    sales_quantity INT
);

INSERT INTO sales
(time_stamp, product, sales_quantity
)
VALUES 
("2020-01-14", "Product_A", "100"),
("2020-01-14", "Product_B", "300"),
("2020-01-14", "Product_C", "600"),

("2020-01-15", "Product_A", "100"),
("2020-01-15", "Product_B", "250"),
("2020-01-15", "Product_C", "600"),

("2020-01-16", "Product_A", "130"),
("2020-01-16", "Product_B", "250"),
("2020-01-16", "Product_C", "580"),
("2020-01-16", "Product_D", "400"),

("2020-01-17", "Product_A", "130"),
("2020-01-17", "Product_B", "250"),
("2020-01-17", "Product_C", "900"),
("2020-01-17", "Product_D", "260");

预期结果:

time_stamp   |   product      |    difference
-------------|----------------|---------------------------
2020-01-14   |   Product_A    |       0     (100-100)
2020-01-14   |   Product_B    |     -50     (250-300)
2020-01-14   |   Product_C    |       0     (600-600)
-------------|----------------|---------------------------
2020-01-15   |   Product_A    |      30     (130-100)
2020-01-15   |   Product_B    |       0     (250-250)
2020-01-15   |   Product_C    |     -20     (580-600)
-------------|----------------|---------------------------
2020-01-16   |   Product_A    |       0     (130-130) 
2020-01-16   |   Product_B    |       0     (250-250)
2020-01-16   |   Product_C    |     320     (900-580) 
2020-01-16   |   Product_D    |    -140     (260-400)

我想计算difference的的sales_quantityproduct之间timestamps
我尝试使用此查询,但未返回预期结果:

SELECT
t1.time_stamp,
t1.product,
t1.sum_sales_quantity - coalesce(lag(t1.sum_sales_quantity) over(order by t1.time_stamp, t1.product), t1.sum_sales_quantity) AS difference
FROM (
    SELECT 
    time_stamp,
    product,
    SUM(sales_quantity) AS sum_sales_quantity
    FROM sales
    GROUP BY 1,2) t1
ORDER BY 1,2;

我必须如何修改查询才能使其正常工作?

戈登·利诺夫

看起来像您想要的lead()

SELECT s.*,
       (s.sales_quantity -
        LEAD(s.sales_quantity) OVER (PARTITION BY s.product ORDER BY s.time_stamp)
       ) as diff
FROM sales s;
ORDER BY 1, 2;

注意:这包括的数据'2020-01-17'如果要删除它,最简单的方法是子查询:

SELECT s.*,
       (next_sales - s.sales_quantity) as diff
FROM (SELECT s.*,
             LEAD(s.sales_quantity) OVER (PARTITION BY s.product ORDER BY s.time_stamp) as next_sales
      FROM sales s
     ) s
WHERE next_sales IS NOT NULL
ORDER BY 1, 2;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 dplyr 计算不同时间条件值之间的绝对差异

来自分类Dev

如何计算R中不同时间序列长度上的最大值和最小值之间的差异?

来自分类Dev

在不同时间导入

来自分类Dev

SQL查询以合并两个具有不同时间戳的表作为索引

来自分类Dev

如何比较带有不同时间戳的Matlab中的.mat文件

来自分类Dev

合并具有不同时间戳格式的日志文件

来自分类Dev

SQL查询以合并两个具有不同时间戳的表作为索引

来自分类Dev

如何合并两个具有不同时间戳的熊猫

来自分类Dev

在具有不同时间戳的两个文档之间减去数字字段

来自分类Dev

在相同数量的记录上执行CListCtrl :: InsertItem的不同时间

来自分类Dev

在相同数量的记录上执行CListCtrl :: InsertItem的不同时间

来自分类Dev

如何在不同时间范围内计算RMSE

来自分类Dev

XNA Mediaplayer.Play()在不同时间开始在计算机上播放?

来自分类Dev

计算不同日期相同时间的平均值

来自分类Dev

计算具有不同时间增量的对象的平均值

来自分类Dev

绘制超过一天的具有不同时间戳和datetime.time格式的时间序列

来自分类Dev

分组并计算时间戳的差异

来自分类Dev

删除具有相同时间戳numpy的行

来自分类Dev

将相同时间转换为不同时区

来自分类Dev

如何计算R中具有不同时间范围和NA的时间序列数据的均值

来自分类Dev

Lisp:同一个数学函数在不同时间计算出不同的值?

来自分类Dev

不同时间之间的日期时间逻辑

来自分类Dev

如何在不同时间从Facebook请求不同的权限?

来自分类Dev

SQL:两个不同时间段的查询,并计算百分比变化?

来自分类Dev

在不同时间调整多个元素的事件大小

来自分类Dev

如何使用jQuery在不同时间淡化图像

来自分类Dev

使服务每天在不同时间运行

来自分类Dev

合并具有不同时间间隔的xts对象

来自分类Dev

检查日期和日期的不同时间

Related 相关文章

  1. 1

    使用 dplyr 计算不同时间条件值之间的绝对差异

  2. 2

    如何计算R中不同时间序列长度上的最大值和最小值之间的差异?

  3. 3

    在不同时间导入

  4. 4

    SQL查询以合并两个具有不同时间戳的表作为索引

  5. 5

    如何比较带有不同时间戳的Matlab中的.mat文件

  6. 6

    合并具有不同时间戳格式的日志文件

  7. 7

    SQL查询以合并两个具有不同时间戳的表作为索引

  8. 8

    如何合并两个具有不同时间戳的熊猫

  9. 9

    在具有不同时间戳的两个文档之间减去数字字段

  10. 10

    在相同数量的记录上执行CListCtrl :: InsertItem的不同时间

  11. 11

    在相同数量的记录上执行CListCtrl :: InsertItem的不同时间

  12. 12

    如何在不同时间范围内计算RMSE

  13. 13

    XNA Mediaplayer.Play()在不同时间开始在计算机上播放?

  14. 14

    计算不同日期相同时间的平均值

  15. 15

    计算具有不同时间增量的对象的平均值

  16. 16

    绘制超过一天的具有不同时间戳和datetime.time格式的时间序列

  17. 17

    分组并计算时间戳的差异

  18. 18

    删除具有相同时间戳numpy的行

  19. 19

    将相同时间转换为不同时区

  20. 20

    如何计算R中具有不同时间范围和NA的时间序列数据的均值

  21. 21

    Lisp:同一个数学函数在不同时间计算出不同的值?

  22. 22

    不同时间之间的日期时间逻辑

  23. 23

    如何在不同时间从Facebook请求不同的权限?

  24. 24

    SQL:两个不同时间段的查询,并计算百分比变化?

  25. 25

    在不同时间调整多个元素的事件大小

  26. 26

    如何使用jQuery在不同时间淡化图像

  27. 27

    使服务每天在不同时间运行

  28. 28

    合并具有不同时间间隔的xts对象

  29. 29

    检查日期和日期的不同时间

热门标签

归档