【发布时间】:2022-01-03 08:29:47
【问题描述】:
我有一张如下表。在这个表中,我们有多个相同的记录,只是具有不同的 refresh_id。但是我们必须选择具有最新 refresh_id 的记录,例如我们必须删除粗体/突出显示的行,因为它们的重复项可通过最新的 refresh_id 获得。请帮助我使用 SQL/HiveQL 解决这个问题。
[1]: https://i.stack.imgur.com/YTFav.png
| day | product_id | refresh_id | ||
|---|---|---|---|---|
| 11/19/2021 | abcd | 1637515839 | ||
| 11/19/2021 | abcd | 1637515839 | ||
| 11/19/2021 | abcd | 1637515839 | ||
| 11/19/2021 | abcd | 1637515839 | ||
| 11/19/2021 | abcd | 1637430516 | ||
| 11/19/2021 | efgh | 1637430516 | ||
| 12/11/2021 | ijkl | 1637430516 | ||
| 12/11/2021 | ijkl | 1637430250 |
输出:
| day | product_id | refresh_id |
|---|---|---|
| 11/19/2021 | abcd | 1637515839 |
| 11/19/2021 | abcd | 1637515839 |
| 11/19/2021 | abcd | 1637515839 |
| 11/19/2021 | abcd | 1637515839 |
| 11/19/2021 | efgh | 1637430516 |
| 12/11/2021 | ijkl | 1637430516 |
我尝试了以下查询作为尝试,但似乎根本没有帮助,请给我一些线索。
select mod_op.day, mod_op.product_id, mod_op.refresh_id
, dense_rank() over(partition by mod_op.day,mod_op.product_id order by mod_op.refresh_id desc) as dense_rank
from table mod_op
where mod_op.refresh_id in (refresh_id1, refresh_id2);
【问题讨论】:
-
MySQL SQL Server Hive - 请更正您的标签。