es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , , ,

Answer

  1. Avatar for 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:

    SELECT t1.Id, t1.dept, t1.salary 
    FROM table t1 
    WHERE t1.salary = 
        (SELECT MAX(t2.salary) 
         FROM table t2 
         WHERE t2.dept = t1.dept);
    

    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.

Comments are closed.