J'ai la requête suivante: qui retourne plusieurs rangées par titre. Je veux seulement le salaire maximum pour chaque titre. p> code @zealouse @zealous et ces travaux: p>
3 Réponses :
Essayez cette fonction de fenêtre Si vous voulez juste un enregistrement avec Max salaire, utilisez dense_rank () code>. S'il y a une cravate dans le salaire, il retournera les deux enregistrements avec Max salaire. Row_Number () code>. P> select
title,
first_name,
last_name,
salary
from
(select
distinct p.title,
e.first_name,
e.last_name,
salary,
dense_rank() over (partition by title order by salary desc) as rnk
from employees as e
inner join employees_projects as ep
on e.id = ep.employee_id
inner join projects as p
on p.id = ep.project_id
group by 1,2,3
) t
where rnk = 1
order by title
@ Mr-SK GROND POUR ETEDER QUOI fonctionne. Si cela fonctionne pour vous, veuillez l'accepter s'il vous plaît en cliquant sur la marque, merci.
En supposant que vous voulez une ligne par titre, utilisez Si vous pouvez avoir plusieurs titres, vous pouvez utiliser distinct sur code>: rang ( ) code> ou dense_rank () code> dans une sous-requête: p>
Ceci est fondamentalement le cas lorsque le groupe par le groupe ne peut pas être utilisé, ce qui vous voulez que vous voulez également avoir une perte de toutes les colonnes.
Vous pouvez simplement utiliser ci-dessous P>
Select * from (
select distinct p.title, e.first_name,
e.last_name, e.salary
, rank()
Over(partition by 1 order by
e.salary desc)
) rn
from employees as e
inner join employees_projects as ep
on e.id = ep.employee_id
inner join projects as p
on p.id = ep.project_id)
Where rn=1