【问题标题】:SELECT data and latest stock from GROUP从 GROUP 中选择数据和最新库存
【发布时间】:2018-05-28 17:12:23
【问题描述】:

我必须根据下面的例子来问我的问题。

mysql 表


第 1 步:获取每日销售额

SELECT SUM(amount) as sold, productnumber, DATE(date) AS date
FROM foo
GROUP BY productnumber, DATE(date)
ORDER BY date;

返回:


第 2 步 / 想要:每天获取销售额和最新库存

最新库存 = 每天最后一次库存更新,例如对于产品编号 123,它在 2017 年 12 月 6 日是 7:

那么这个怎么选呢?

显然,仅将库存添加到 SELECT 是行不通的:

SELECT stock, SUM(amount) as sold, productnumber, DATE(date) AS date
FROM foo
GROUP BY productnumber, DATE(date)
ORDER BY date;

在该产品和当天返回 0 而不是 7:


左连接?子查询?

如何正确编写这条SQL?

提前致谢!

【问题讨论】:

    标签: mysql select join group-by subquery


    【解决方案1】:

    规范的方式是join:

    SELECT f.*, f2.stock
    FROM foo f JOIN
         (SELECT f.productnumber, SUM(f.amount) as sold, DATE(f.date) as date,
                 MAX(f.date) as maxdate
          FROM foo f
          GROUP BY f.productnumber, DATE(f.date)
         ) f join
         foo f2
         ON f2.productnumber = f.productnumber AND f2.date = f.maxdate
    ORDER BY date;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 2014-01-25
      相关资源
      最近更新 更多