5 votes

Obtenir l'ID de l'article avec le prix le plus élevé

J'ai un tableau avec l'ID de l'article et le prix de l'article. J'utilise Oracle. J'aimerais obtenir uniquement les identifiants dont le prix est le plus élevé.

Cela fonctionne sur MySQL, mais pas sur Oracle (pourquoi pas !?!?).

SELECT Main.itemid 
  FROM Main 
HAVING MAX(Main.itemprice)

Comme je vais l'utiliser dans une autre requête imbriquée, je dois faire en sorte que cela fonctionne en utilisant les éléments suivants HAVING . Des idées ? Merci !

BTW, produit cette erreur :

ORA-00920: invalid relational operator

4voto

Cela devrait vous donner la liste distincte de itemiditemprice est maximale (dans tout le tableau) :

select itemid
from Main
where itemprice=(select max(itemprice) from Main)
group by itemid;

2voto

Erwin Brandstetter Points 110228

Edit : Avec rank() au lieu de row_number() il devrait maintenant faire ce qui a été demandé :
Obtenir tous les articles dont le prix est le plus élevé.

SELECT itemid
  FROM (
   SELECT itemid
         ,rank() OVER (ORDER BY itemprice DESC) AS rn
     FROM Main)
 WHERE rn = 1;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X