如何使用 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)
我有以下 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)