Estoy intentando eliminar el valor más alto de un grupo. Teniendo en cuenta estos datos:Cómo eliminar el valor más alto en un grupo
group_table
group_id | st_area
---------------
1 | 20
1 | 30
2 | 1
2 | 1
2 | 200
me gustaría eliminar la segunda y quinta filas. Yo sé cómo seleccionar el más alto de cada grupo:
SELECT max(area) FROM group_table GROUP BY group_id
no puedo encontrar la manera de formular una instrucción de eliminación que aceptar eso como una sub consulta, sin embargo. Cuando intento delete from group_table where st_area = max(st_area);
Me sale un error: aggregates not allowed in WHERE clause
.
Una cosa que he aprendido bastante rápido en SO es que no soy un comunicador terriblemente bueno. Si lo que estoy pidiendo no está claro & te sientes paciente, ciertamente intentaré aclararlo.
Gracias!
¿tiene una clave principal? Si no, ¿qué desea hacer si hay dos filas MAX (por ejemplo, en su ejemplo, (1,30) está duplicado) – Dutow
No, no tengo una clave principal, pero es una tabla temporal y estoy susceptible de agregar uno. Sin embargo, la columna st_area va a ser bastante aproximada, ya que es un cálculo de área de algunos grados decimales. Tiene 10 dígitos de largo. :) – canisrufus