【发布时间】:2017-03-22 21:06:19
【问题描述】:
我有以下查询,它返回我的移动、容器的名称和容器的 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
它返回给我这个
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)。像这样,显示最后一个动作是“GateIn Patio”的这3个不同的容器(table title:equipo_identi):
movimiento | equipo_identi | ciclo
------------- --------------- --------
GateIn Patio | CBHU4329906 | 1
GateIn Patio | CSLU1387094 | 2
GateIn Patio | CSLU1407729 | 2
为此,我有下表来设置我的移动优先级。
表格优先级_movimiento
prioridad | movimiento
---------- ----------------
1 | Descarga
2 | GateOut Puerto
3 | GateIn Patio
4 | GateOut Patio
5 | GateIn Puerto
6 | Export
最高优先级为 6,最低优先级为 1。
【问题讨论】:
-
你能解释一下需求的逻辑吗?为什么要获取 movimiento = 'GateIn Patio' 的所有行?
-
@GiorgosAltanis 因为我只需要查看它具有容器的最后一个动作的最后一个 cicle,所以这些动作可以是列出的 6 个中的任何一个。
-
我不确定我是否理解;如果您只需要查看最后一个动作的最后一个循环,为什么您期望最后一个动作的所有三行而不是一个? [而这只是我不明白的事情之一]
-
@GiorgosAltanis 因为,这三行中的每一行都显示了不同容器的最后移动。那是因为它显示 3,这意味着有 3 个容器具有实际运动“GateIn Patio”。
-
所以容器是
equipo_identi?
标签: sql postgresql greatest-n-per-group