Cómo seleccionar una columna que no se encuentra en la cláusula GROUP BY.
seleccionar el id de la tabla basado en el salario más alto de cada depto
tabla
Id | dept | salario |
---|---|---|
1 | support | 25000 |
2 | support | 20000 |
3 | development | 35000 |
4 | development | 25000 |
5 | development | 30000 |
select Id from table
where salario In (select max(salario) from table group by dept)
Si ejecuto la consulta de esta manera, obtengo la siguiente salida
Id |
---|
1 |
3 |
4 |
Utilicé las funciones de ventana de clasificación y CTE para resolver esta consulta
with rank_message as (select id,dept,
ROW_NUMBER() over (partition by dept order by salario desc) as sal
from table S)
select id,dept from rank_message where sal=1
davy.ai
La consulta anterior también se puede escribir utilizando una subconsulta en lugar de una expresión de tabla común (CTE), como:
La subconsulta evalúa el salario máximo para cada departamento y luego la consulta principal selecciona el registro con ese salario máximo para cada departamento utilizando la cláusula WHERE.