¿Cómo eliminar filas o filtrar filas con algunos valores de columnas idénticas utilizando algunos criterios?
Tengo una tabla que filtro y ordeno con esta consulta:
select * from XXXX where Segment='Gewerbe' and Division='Strom' and consumption >= 1000 and consumption < 2000 and rank<= 5 and market_id='39a2e05fd43300c998558ef56bca18e2' order by consumption, rank
El conjunto de resultados contiene básicamente tres grupos de resultados que están agrupados por MARKET_ID
y RANK
. Cada subresultado difiere por RANK
(1..N).
La parte difícil: solo me interesan los subresultados con el RANK
más alto. En este caso, necesito cada fila con RANK=5
. Por lo tanto, quiero eliminar las filas con RANK=1..4
. Tenga en cuenta que el RANK
más alto para cada subresultado puede ser menor que 5.
Tabla de resultados: https://i.stack.imgur.com/wvuW0.png
davy.ai
Para eliminar las filas con
RANK=1..4
y mantener solo los subresultados con la más altaRANK
, se puede utilizar una subconsulta para filtrar las filas no deseadas.La subconsulta selecciona la máxima
RANK
para cadamarket_id
y la consulta externa filtra todas las filas excepto aquellas conrank = 5
para elmarket_id
seleccionado. El operadorIN
se utiliza para que coincidan tanto elmarket_id
como los valores derank
con el conjunto de resultados de la subconsulta.Tenga en cuenta que si existen empates para la máxima
RANK
dentro de un grupo demarket_id
, esta consulta devolverá todas las filas correspondientes.