假如有以下数据
product | order_date | sale |
---|---|---|
A | 2020-05-01 | 250 |
B | 2020-05-01 | 350 |
C | 2020-05-01 | 1250 |
A | 2020-05-02 | 450 |
B | 2020-05-02 | 650 |
C | 2020-05-02 | 1050 |
A | 2020-05-03 | 150 |
B | 2020-05-04 | 250 |
C | 2020-05-05 | 1850 |
目的:获取product A/B/C最新的销售额,比如最新的应该是
product | order_date | sale |
---|---|---|
A | 2020-05-03 | 150 |
B | 2020-05-04 | 250 |
C | 2020-05-05 | 1850 |
先分别找出最新的日期
最主要是这个group by,如果你的需求相反,只想获取最新的一个日期,那么就不需要用到它了!
mysql> select product,max(order_date) from product_sales group by product;
product | max(order_date) |
---|---|
A | 2020-05-03 |
B | 2020-05-04 |
C | 2020-05-05 |
现在我们知道了最新的日期了,那么只需要让每组的日期和原始数据拼接起来即可
mysql> select t.* from product_sales t, (select product,max(order_date) as order_date from product_sales group by product) t1 where t.product=t1.product and t.order_date=t1.order_date;
product | order_date | sale |
---|---|---|
A | 2020-05-03 | 150 |
B | 2020-05-04 | 250 |
C | 2020-05-05 | 1850 |