微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL-如何选择每月的最晚日期?

如何解决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 举报,一经查实,本站将立刻删除。