我处理的是这样的企业数据。
| load_number | id | time | slot_time | region | network |
|-------------|-----------|----------|-----------|--------|---------|
| 1692 | 641131146 | 00:20:00 | 00:20:00 | FX-4 | SBOB |
| 1692 | 641131146 | 00:20:00 | 00:20:30 | FX-4 | SBOB |
| 1442 | 570732257 | 00:20:00 | 00:20:00 | FX-4 | SBOB |
| 1442 | 570732257 | 00:20:00 | 00:20:30 | FX-4 | SBOB |
| 1692 | 641131147 | 00:55:00 | 00:55:00 | FX-4 | SBOB |
| 1692 | 641131147 | 00:55:00 | 00:55:30 | FX-4 | SBOB |
| 1442 | 570732258 | 00:55:00 | 00:55:00 | FX-4 | SBOB |
| 1442 | 570732258 | 00:55:00 | 00:55:30 | FX-4 | SBOB |
问题是,该公司的数据做法不好,更改/重用了id,但只更新了 load_number
现场。
如何构造sql查询以提取最新加载的数据,如下所示:
| load_number | id | time | slot_time | region | network |
|-------------|-----------|----------|-----------|--------|---------|
| 1692 | 641131146 | 00:20:00 | 00:20:00 | FX-4 | SBOB |
| 1692 | 641131146 | 00:20:00 | 00:20:30 | FX-4 | SBOB |
| 1692 | 641131147 | 00:55:00 | 00:55:00 | FX-4 | SBOB |
| 1692 | 641131147 | 00:55:00 | 00:55:30 | FX-4 | SBOB |
基本上每个领域都会匹配除了 id
以及 load_number
. 因此,假设除这两个字段外,每个字段都匹配,我可以通过取较高的行来删除“重复项”吗 load_number
.
我在想某种下降的方法 rank()
上 load_number
,非常感谢您的帮助!
3条答案
按热度按时间b4lqfgs41#
试试这个
ygya80vv2#
你可以用
distinct on
:db小提琴演示:
krugob8w3#
你可以使用窗口功能
rank
或者dense_rank
选择最近的装载编号。这是演示。输出: