Requête pour trouver la nième valeur maximale d'une colonne
Je veux trouver des 2ème,3ème..nième valeur maximale d'une colonne
- Quelle base de données? Je ne pense pas qu'il y est un très bon "générique" solution à ce problème.
- trop générique, je pense que: spécifier au moins sur ce qui SGBD...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trier la colonne en descendant format et puis juste obtenir la valeur de la nième ligne.
EDIT::
Mise à jour, selon le commentaire de demande. AVERTISSEMENT complètement non testé!
Quelque chose comme ci-dessus devrait fonctionner pour Oracle ... vous pourriez avoir à obtenir la syntaxe droit de premier!
ROWID
est ni sûr, ni une chose pratique à faire. Prenez le cas de la sqlite.ROWID
peut ou ne peut pas être généré en série. En outre l'ordre deROWID
peuvent ne pas correspondre à celle de la colonne demandée.Considérer l'Employé table avec une seule colonne de salaire.
La requête suivante renvoie le n-ième élément Maximal.
Pour eg. lors de la deuxième valeur maximale est requise,
>=
opérateur pour obtenir toutes les lignes jusqu'à la Nième position. Je voudrais ajouter un classement, comme les '1' pour la valeur max, '2' pour la seconde max, etc.. avez-vous une idée de comment aller à ce sujet.Vous n'avez pas à spécifier la base de données, MySQL, vous pouvez faire
Serait ignorer les 7 premiers, et vous obtenez alors la prochaine dix plus hautes.
Encore une fois, vous pouvez avoir besoin de réparer votre base de données, mais si vous voulez le haut de la 2e valeur dans un ensemble de données qui a potentiellement la valeur dupliqué, vous aurez envie de faire un groupe:
Serait ignorer les deux premiers, et alors vous obtiendrez les cinq plus élevé.
Pur SQL (note: je vous conseille d'utiliser SQL fonctionnalités spécifiques à votre SGBD car il sera probablement plus efficace). Ainsi, vous obtenez le n+1ème plus grande valeur (pour obtenir le plus petit, le flip <). Si vous avez des doublons, faire COUNT( DISTINCT de la VALEUR )..
(Nom de la Table=Étudiant, le Nom de Colonne= marque)
Vous pouvez trouver le n-ième plus grande valeur de la colonne à l'aide de la requête suivante:
Voici une méthode pour Oracle. Cet exemple renvoie la 9e valeur la plus élevée. Il suffit de remplacer le 9 avec une liaison variable contenant la position que vous recherchez.
Si vous vouliez la nième valeur unique, vous ajoutez DISTINCTES sur les recoins les plus profonds de la requête bloc.
Juste creusé cette question lors de la recherche de la réponse moi-même, et cela semble fonctionner pour SQL Server 2005 (dérivé de Blorgbeard de la solution):
Effectivement, c'est un
SELECT MIN(q.someCol) FROM someTable q
, avec le dessus de la n de la table récupérée par laSELECT DISTINCT...
requête.Pour trouver le n-ième max sal.
C'est une requête pour obtenir la n-ième Plus haut de colonne de mettre n=0 pour le deuxième rang et n= 1 pour le 3ème plus haut et ainsi de suite...
où n = 1, 2, 3,....nième valeur max.
Dans SQL Server, il suffit de faire:
Et puis jeter la première valeur, si vous n'en avez pas besoin.
pour SQL 2005:
MySQL:
Réponse :
deuxièmement:
Je pense que la requête ci-dessous fonctionnent tout simplement parfait sur oracle sql...je l'ai testé moi-même..
Infos liées à cette requête : cette requête est à l'aide de deux tables nommées
employee
etdepartment
avec des colonnes de l'employé nommé:name
(nom de l'employé),dept_id
(commune de salariés et département),salary
Et de colonnes dans le département de la table:
dept_id
(commun à tous les employés de la table ainsi),dept_name
grâce
Un autre pour Oracle à l'aide des fonctions analytiques:
Changement de Numéro quatre avec N.
Vous pouvez simplifier comme ça
Si le Sal contient des valeurs en double, puis utiliser cette
le 4 sera nième valeur toute valeur la plus élevée, tels que 5 ou 6 etc.
(TableName=Étudiant, ColumnName=Marque) :
Simple Requête SQL pour obtenir l'employé détail qui a Nième MAX
Salary
dans le tableauEmployee
.Envisager la structure de la table comme:
Exemple:
Si vous avez besoin d'3ème
MAX
salaire dans le tableau ci-dessus puis, la requête sera:De la même façon:
Si vous avez besoin d'8
MAX
salaire dans le tableau ci-dessus puis, la requête sera:Comme cela, vous pouvez faire la même opération en cas de salaire dans l'ordre croissant.
Dans PostgreSQL, trouver la N-ème plus gros salaire de l'Employé de la table.
requête mysql:
supposons que je veux trouver nième max forme de salaire de l'employé table
Solution pour trouver la Nième valeur Maximale d'une colonne particulière dans SQL Server:
Table des employés:
Table de vente:
Employé données de la table:
Ventes données de la table:
Requête pour Trouver les détails d'un employé qui ont la plus forte vente/Nth plus vendeur
Dans le OÙ(0) remplacer 0 par n-1
Résultat:
Table employé
Vous trouver la deuxième valeur max par cette requête
Vous trouverez la troisième valeur max par cette requête