如何使用 SQL 仅 SELECT 每个组中最近的一组?

How to SELECT only the most recent of each group using SQL?

我有以下 table:

TABLE sales
| id | name | date       | amount |
|----|------|------------|--------|
|  1 | Mike | 2016-12-05 |  67.15 |
|  2 | Mike | 2016-12-09 |  98.24 |
|  3 | John | 2016-12-12 |  12.98 |
|  4 | Mike | 2016-12-19 |  78.48 |
|  5 | Will | 2016-12-19 | 175.26 |
|  6 | John | 2016-12-22 |  14.26 |
|  7 | John | 2016-12-23 |  13.48 |

我正在尝试创建一个视图,该视图将按名称列分组,return 仅按最反感的数量分组。它应该是这样的:

TABLE sales_view
| id | name | date       | amount |
|----|------|------------|--------|
|  4 | Mike | 2016-12-19 |  78.48 |
|  5 | Will | 2016-12-19 | 175.26 |
|  7 | John | 2016-12-23 |  13.48 |

我不知道该怎么做。我想我会需要子查询,但我知道 SQL 如果你试图在视图中使用它们会生气。

您可以使用元组和子查询以及 group by for max(date)

 select * from sales
 where (name, date) in ( select name, max(date) 
                         from sales 
                         group by name)