如何解决SQL-如何选择每月的最晚日期?
我的数据集看起来像这样:
|---------------------|------------------|------------------|
| ID | Date | Cost |
|---------------------|------------------|------------------|
| 1 | 9/15/20 | $500 |
|---------------------|------------------|------------------|
| 1 | 9/30/20 | $600 |
|---------------------|------------------|------------------|
| 1 | 10/2/20 | $400 |
|---------------------|------------------|------------------|
| 2 | 10/10/20 | $1,000 |
|---------------------|------------------|------------------|
| 3 | 9/29/20 | $600 |
|---------------------|------------------|------------------|
| 3 | 10/5/20 | $400 |
|---------------------|------------------|------------------|
| 3 | 10/6/20 | $800 |
|---------------------|------------------|------------------|
| 3 | 10/10/20 | $200 |
|---------------------|------------------|------------------|
在Looker中使用sql Runner,我只希望每个月仅保留每个ID可用的最新日期的行。所以我的示例表应该像这样结束:
|---------------------|------------------|------------------|
| ID | Date | Cost |
|---------------------|------------------|------------------|
| 1 | 9/30/20 | $600 |
|---------------------|------------------|------------------|
| 1 | 10/2/20 | $400 |
|---------------------|------------------|------------------|
| 2 | 10/10/20 | $1,000 |
|---------------------|------------------|------------------|
| 3 | 9/29/20 | $600 |
|---------------------|------------------|------------------|
| 3 | 10/10/20 | $200 |
|---------------------|------------------|------------------|
解决方法
如果您的DBMS支持row_number()
,则可以使用
select id,date,cost from
(
select id,cost,row_number() over(partition by id order by date desc) as rn
from tablename
)A where rn<=2
,
以下内容几乎可以在任何数据库上运行:
select id,month(date),max(date) as latest_date_in_month
from <TABLE>
group by id,month(date)
order by id,month(date)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。