【发布时间】:2022-01-20 02:12:13
【问题描述】:
我有一张桌子,有几个客户在酒店住了一个月或几个月。我需要按月找到 3 家访问量最大的酒店。如果一位客户在酒店住了三个月,那么它指的是三个月。更准确地说,下表hotel 我有:
| id | usr_id | srch_ci | srch_co | hotel_id |
|---|---|---|---|---|
| 1 | 13 | 2021-10-01 | 2021-11-22 | 200 |
| 2 | 12 | 2021-10-11 | 2021-10-22 | 300 |
| 3 | 11 | 2021-10-28 | 2021-11-05 | 200 |
| 4 | 10 | 2021-10-28 | 2021-12-03 | 100 |
结果应如下所示:
| mnth | hotel_id | rnk | visits |
|---|---|---|---|
| 2021-10 | 200 | 1 | 2 |
| 2021-10 | 100 | 2 | 1 |
| 2021-10 | 300 | 2 | 1 |
| 2021-11 | 200 | 1 | 2 |
| 2021-11 | 100 | 2 | 1 |
| 2021-12 | 100 | 1 | 1 |
如上所示,user_id = 10 在 hotel = 100 住了 3 个不同的月份。这意味着它在 3 个不同的月份为一家酒店计为 1 个计数。而对于2021-12 月只有用户 = 10 人入住,因此在 2021-12 月酒店 = 100 被列为1st。
【问题讨论】:
-
您对解决方案的编码尝试在哪里?如果没有,请research 寻求解决方案,认真尝试,然后返回一个关于尝试的具体问题,例如任何错误或不希望的结果。
-
是的,你是对的。在发布问题之前,我做了几个小时的研究。但是我找不到如何在两个日期之间进行分组的方法。无论如何,谢谢!
标签: sql postgresql