sql—基于一列执行重复数据消除的查询

xjreopfe  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(307)

我的数据在teradata中看起来像这样

| 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    |
| 14          | 123456    | 00:20:00 | 00:20:00  | ABC    | XYZ     |
| 14          | 123456    | 00:20:00 | 00:20:30  | ABC    | XYZ     |
| 19          | 234567    | 00:20:00 | 00:20:00  | ABC    | XYZ     |
| 19          | 234567    | 00:20:00 | 00:20:30  | ABC    | XYZ     |

如何构造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    |
| 19          | 234567    | 00:20:00 | 00:20:00  | ABC    | XYZ     |
| 19          | 234567    | 00:20:00 | 00:20:30  | ABC    | XYZ     |

基本上每个领域都会匹配除了 id 以及 load_number . 因此,假设除这两个字段外,每个字段都匹配,我可以通过取较高的行来删除“重复项”吗 load_number . 这些数据在不同的方面可能有所不同 region 以及 network 列,以及 load_number 也可能不同。
我在想什么降序()的方法 load_number 或者在除 id 以及 load_number ,然后取最高负载号,任何帮助都非常感谢!

6ojccjat

6ojccjat1#

如果我理解正确,你可以用 row_number() 以及 qualify :

select t.*
from t
qualify row_number() over (partition by time, slot_time, region, network order by load_number desc) = 1

相关问题