如何解决如何限制每个值的行数?
这是我的示例数据。
Date Name Subject Importance Location Time Rating
12/08/2020 David Work 1 London - -
1/08/2020 David Work 3 London 23.50 4
2/10/2018 David Emails 3 New York 18.20 3
12/08/2020 George Updates 2 New York - -
1/08/2019 George New Appointments5 London 55.10 2
2/10/2019 David Emails 3 Paris 18.58 3
8/09/2017 David Emails 2 Paris 18.90 5
我需要能够看到明天的会议以及我与每个客户进行的前3次会议。因此,将按名称排序,然后按日期将每个名称的条目限制为3。有人可以指出正确的方向吗?
预期结果将是
Date Name Subject Importance Location Time Rating
12/08/2020 David Work 1 London - -
1/08/2020 David Work 3 London 23.50 4
2/10/2018 David Emails 3 New York 18.20 3
2/10/2019 David Emails 3 Paris 18.58 -
12/08/2020 George Updates 2 New York - -
1/08/2019 George New Appointments5 London 55.10 2
解决方法
您可以使用窗口功能来计算“明天”的下三个会议的数量。然后进行一些过滤:
select t.*
from (select t.*,count(*) filter (where date = current_date + interval '1 day') over
(partition by name
order by date
rows between 1 following and 3 following
) as cnt_tomorrow
from t
) t
where date = current_date + interval '1 day' or
cnt_tomorrow > 0
order by name,date;
Here是db 小提琴。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。