Postgresql:仅显示最大值
Postgresql: Show only the max value
我有以下查询 returns 我的移动、容器名称和容器的 cicle。容器上cicle的最大值表示是同一个容器的实际cicle。
select des.movimiento,
des.equipo_identi,
max(des.ciclo) as ciclo
from publico.descarga des
inner join publico.prioridad_movimiento primo
on des.movimiento = primo.movimiento
group by des.movimiento, des.equipo_identi, primo.prioridad
order by primo.prioridad
它returns我这个
movimiento | equipo_identi | ciclo
--------------- --------------- --------
Descarga | CBHU4329906 | 1
Descarga | CSLU1387094 | 2
Descarga | CSLU1407729 | 2
GateOut Puerto | CBHU4329906 | 1
GateOut Puerto | CSLU1387094 | 2
GateOut Puerto | CSLU1407729 | 2
GateIn Patio | CBHU4329906 | 1
GateIn Patio | CSLU1387094 | 2
GateIn Patio | CSLU1407729 | 2
我想要的是在最后一个动作(movimiento)上显示最后一个cicle(ciclo)。像这样,显示这 3 个不同的容器(table 标题:equipo_identi)最后一个移动是 "GateIn Patio":
movimiento | equipo_identi | ciclo
------------- --------------- --------
GateIn Patio | CBHU4329906 | 1
GateIn Patio | CSLU1387094 | 2
GateIn Patio | CSLU1407729 | 2
为此,我有以下 table 设置我的移动优先级。
Table prioridad_movimiento
prioridad | movimiento
---------- ----------------
1 | Descarga
2 | GateOut Puerto
3 | GateIn Patio
4 | GateOut Patio
5 | GateIn Puerto
6 | Export
最大优先级为 6,最小为 1。
如果我没理解错的话,你只是想在聚合后按优先级对结果进行排序:
select x.*
from (select des.movimiento, des.equipo_identi, max(des.ciclo) as ciclo,
rank() over (order by primo.prioridad desc) as rnk
from publico.descarga des inner join
publico.prioridad_movimiento primo
on des.movimiento = primo.movimiento
group by des.movimiento, des.equipo_identi, primo.prioridad
) x
where rnk = 1;
我有以下查询 returns 我的移动、容器名称和容器的 cicle。容器上cicle的最大值表示是同一个容器的实际cicle。
select des.movimiento,
des.equipo_identi,
max(des.ciclo) as ciclo
from publico.descarga des
inner join publico.prioridad_movimiento primo
on des.movimiento = primo.movimiento
group by des.movimiento, des.equipo_identi, primo.prioridad
order by primo.prioridad
它returns我这个
movimiento | equipo_identi | ciclo
--------------- --------------- --------
Descarga | CBHU4329906 | 1
Descarga | CSLU1387094 | 2
Descarga | CSLU1407729 | 2
GateOut Puerto | CBHU4329906 | 1
GateOut Puerto | CSLU1387094 | 2
GateOut Puerto | CSLU1407729 | 2
GateIn Patio | CBHU4329906 | 1
GateIn Patio | CSLU1387094 | 2
GateIn Patio | CSLU1407729 | 2
我想要的是在最后一个动作(movimiento)上显示最后一个cicle(ciclo)。像这样,显示这 3 个不同的容器(table 标题:equipo_identi)最后一个移动是 "GateIn Patio":
movimiento | equipo_identi | ciclo
------------- --------------- --------
GateIn Patio | CBHU4329906 | 1
GateIn Patio | CSLU1387094 | 2
GateIn Patio | CSLU1407729 | 2
为此,我有以下 table 设置我的移动优先级。
Table prioridad_movimiento
prioridad | movimiento
---------- ----------------
1 | Descarga
2 | GateOut Puerto
3 | GateIn Patio
4 | GateOut Patio
5 | GateIn Puerto
6 | Export
最大优先级为 6,最小为 1。
如果我没理解错的话,你只是想在聚合后按优先级对结果进行排序:
select x.*
from (select des.movimiento, des.equipo_identi, max(des.ciclo) as ciclo,
rank() over (order by primo.prioridad desc) as rnk
from publico.descarga des inner join
publico.prioridad_movimiento primo
on des.movimiento = primo.movimiento
group by des.movimiento, des.equipo_identi, primo.prioridad
) x
where rnk = 1;