Quelqu'un peut-il s'il vous plaît dites-moi comment trouver la Comme pour les plus grands, nous pouvons utiliser em> max (nom de colonne) existe-t-il un moyen efficace de trouver le nième plus grand aussi p> p>
12 Réponses :
Vous pouvez whoops, n'a pas vu la balise Oracle, désolé. commander par nom de colonne code>, puis
limite 1,1 code> pour obtenir le second p>
Commandez par nom de colonne où ROWNUM = 2 code> devrait mieux fonctionner. P>
Oracle ne supporte pas la limite.
"Où Rownum = 2" ne retournera jamais de lignes.
De télécharger.oracle.com/docs/cd/b19306_01 /Server.102/b14200/... : "Les conditions de test des valeurs de Rownum supérieures à un entier positif sont toujours fausses." Vous devez alias rownum, puis utiliser cet alias au lieu de Rownum.
SELECT DISTINCT (a.sal) FROM EMP A WHERE &N = ( SELECT COUNT (DISTINCT (b.sal)) FROM EMP B WHERE a.sal<=b.sal ); Replace &N with you desired number. For example, 2 will give you the second largest salary.If you are using PL/SQL, just execute the statement. It will prompt for N.
SELECT * FROM ( SELECT some_column, rank() over (order by your_sort_column desc) as row_rank FROM some_table ) t WHERE row_rank = 3
+1: Seuls les fonctions d'analyse sont prises en charge sur 9i +. Et dense_rank pourrait être un meilleur choix que le rang, en fonction des besoins.
Pas vrai. Les fonctions analytiques étaient disponibles en 8i: .Orcle.com / Docs / CD / A87860_01 / DOC / SERVER.817 / A85397 / ... . Mais 8i et 9i sont de toute façon soutenus. Donc, il n'y a aucune raison de poster des réponses couvrant ces versions s'il n'est pas explicitement mentionné
Je pense que la requête ci-dessous fonctionnera pour trouver le deuxième enregistrement le plus élevé avec simple et utile ... p> p>
Pour obtenir le deuxième plus grand salaire Utilisez ceci:
select salary from (select s2.salary,rownum rm from (select distinct salary from employees order by salary desc) s2 where rownum<=2) where rm >= 2
Fonctionne parfaitement mais je ne comprends toujours pas pourquoi la requête ne fonctionne pas après la modification de la modification ci-dessous: Sélectionnez S2.Salary, RWOWNUM RM (Sélectionnez un salaire distinct de l'ordre des employés par salaire Desc) S2 où RM <= 2
Vous pouvez trouver la nième valeur la plus importante d'une colonne à l'aide de la requête suivante
SELECT * FROM TableName a WHERE n = ( SELECT count( DISTINCT (b.ColumnName) ) FROM TableName b WHERE a.ColumnName <= b.ColumnName );
Bienvenue dans le débordement de la pile! Merci d'avoir posté votre réponse! Assurez-vous de lire le FAQ sur l'auto-promotion avec soin. Notez également qu'il est requis i> que vous postez une clause de non-responsabilité chaque fois que vous liez sur votre propre site / produit.
Cela fonctionne pour le deuxième salaire le plus élevé,
Essayez ceci,
SELECT Sal FROM Tab ORDER BY Sal DESC LIMIT 2,1
Essayez ceci:
SELECT DISTINCT TOP 3 id,[Password] FROM Users_changepassword WHERE [UserId] = 3 ORDER BY id DESC
Vous pouvez essayer ce SQL où la fonction Row_Number () de l'Oracle SQL est utilisée
select column_name from ( select column_name , row_number() over (order by column_name desc) as row_num from table_Name ) tablex where row_num =3
SELECT MAX(Salary) FROM Employee WHERE Salary NOT IN (SELECT MAX(Salary) FROM Employee)
Vous pouvez utiliser requête: p> DBFiddle Demo2 strong> P> Deuxième approche consiste à utiliser connecter par antérieur code> par:
NTH_Value code> Fonction analytique: p>
SELECT DISTINCT NTH_VALUE(sal, 2) OVER(ORDER BY sal DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM t;