Trouver les enregistrements principaux
Obtenez les valeurs les plus élevées et les plus faibles.
Trouver les enregistrements principaux est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce qu'une requête des N premiers éléments
Une requête des N premiers éléments répond à des questions comme « quels sont les 3 produits les plus chers », « quelles sont les 10 commandes les plus récentes » ou « quelles sont les 5 notes les plus faibles ».
Il s'agit simplement d'un tri suivi d'une limite, mais cette opération est si courante qu'elle mérite un nom.
-- Top 3 most expensive products
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;Les N derniers éléments
Pour obtenir les plus petites valeurs, inversez le sens du tri. Triez avec ASC et prenez les N premières lignes pour obtenir les produits les moins chers, les éléments les plus anciens ou les valeurs les plus faibles.
-- 5 cheapest products
SELECT name, price
FROM products
ORDER BY price ASC
LIMIT 5;Ajouter un critère de départage
Si plusieurs lignes ont la même valeur limite, la base de données choisit arbitrairement entre elles. Ajoutez une clé secondaire unique afin que le résultat soit stable et reproductible.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Les N premiers éléments après filtrage
La sélection des N premiers éléments s'effectue sur l'ensemble filtré. Placez d'abord une clause WHERE pour limiter les candidats, puis triez et limitez le résultat.
Cela permet de trouver les 3 produits les plus chers de la catégorie « Books ».
SELECT name, price
FROM products
WHERE category = 'Books'
ORDER BY price DESC
LIMIT 3;Les N premiers éléments après agrégation
Vous pouvez également classer des valeurs calculées. Regroupez, agrégez, puis triez l'agrégat et limitez le résultat.
Cela renvoie les 5 clients qui ont dépensé le plus au total.
SELECT customer_id, SUM(total) AS spent
FROM orders
GROUP BY customer_id
ORDER BY spent DESC
LIMIT 5;L'approche par fonctions de classement
Les fonctions de fenêtre comme ROW_NUMBER() attribuent un rang à chaque ligne. Encapsulez la requête et conservez les lignes dont le rang est faible. Cette méthode s'adapte aux « N premiers éléments par groupe ».
SELECT name, price
FROM (
SELECT name, price,
ROW_NUMBER() OVER (ORDER BY price DESC) AS rn
FROM products
) ranked
WHERE rn <= 3;RANK ou ROW_NUMBER en cas d'ex æquo
ROW_NUMBER() attribue toujours des numéros distincts : il renvoie donc exactement N lignes, même en cas d'ex æquo. RANK() attribue le même numéro aux lignes à égalité : « les 3 premières » peut donc renvoyer plus de 3 lignes s'il y a égalité à la troisième place.
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rnk
FROM products;Les N premiers éléments par groupe
Pour obtenir le meilleur produit dans chaque catégorie, partitionnez le classement par catégorie. PARTITION BY recommence la numérotation pour chaque groupe.
SELECT category, name, price
FROM (
SELECT category, name, price,
ROW_NUMBER() OVER (
PARTITION BY category
ORDER BY price DESC
) AS rn
FROM products
) t
WHERE rn = 1;DISTINCT ON pour une ligne par groupe
DISTINCT ON de PostgreSQL permet de sélectionner en peu de code la première ligne de chaque groupe. Indiquez la colonne de regroupement, puis ordonnez les lignes de manière à placer la ligne souhaitée en premier dans chaque groupe.
SELECT DISTINCT ON (category)
category, name, price
FROM products
ORDER BY category, price DESC;Inclure les ex æquo avec WITH TIES
Si vous voulez les 3 premiers éléments ainsi que toutes les lignes à égalité avec le troisième, utilisez la clause standard FETCH ... WITH TIES. Elle renvoie 3 lignes, auxquelles s'ajoutent celles qui ont la même valeur que la dernière.
SELECT name, price
FROM products
ORDER BY price DESC
FETCH FIRST 3 ROWS WITH TIES;La valeur la plus élevée ou la plus faible
Pour obtenir uniquement la ligne correspondant à la valeur la plus élevée ou la plus faible, ORDER BY ... LIMIT 1 est la méthode la plus simple, plus claire et souvent plus rapide qu'une sous-requête utilisant MAX().
-- The single most recent order
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 1;Vérification rapide
Vous voulez les 3 prix les plus élevés, mais si plusieurs lignes sont à égalité à la troisième place, vous voulez inclure toutes ces lignes.
Récapitulatif
Vous savez maintenant trouver les enregistrements parmi les N premiers de toutes les manières importantes :
ORDER BY ... LIMIT npour les listes simples des valeurs les plus élevées ou les plus faibles- Ajoutez un critère de départage unique pour obtenir des résultats stables
ROW_NUMBER()ouDISTINCT ONpour les N premiers éléments de chaque groupeFETCH ... WITH TIESpour conserver les lignes à égalité
Le tri, la limitation et la sélection des N premiers éléments sont maintenant terminés. Vous pouvez désormais mettre de l'ordre dans n'importe quel ensemble de résultats.
SELECT name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Questions Fréquemment Posées
La leçon « Trouver les enregistrements principaux » est-elle gratuite ?
Oui — le texte complet de « Trouver les enregistrements principaux » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Trouver les enregistrements principaux » ?
Obtenez les valeurs les plus élevées et les plus faibles. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Trouver les enregistrements principaux » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Trier avec ORDER BY
- Trier selon plusieurs colonnes
- LIMIT et OFFSET
- Trouver les enregistrements principaux