Maison > base de données > tutoriel mysql > Comment sélectionner les 10 principaux enregistrements Oracle tout en excluant des dates spécifiques ?

Comment sélectionner les 10 principaux enregistrements Oracle tout en excluant des dates spécifiques ?

Mary-Kate Olsen
Libérer: 2025-01-18 15:36:10
original
304 Les gens l'ont consulté

How to Select the Top 10 Oracle Records While Excluding Specific Dates?

Sélection des 10 meilleurs enregistrements Oracle avec exclusion de date

Cet article aborde le défi courant des bases de données Oracle : récupérer les 10 premiers enregistrements classés par une colonne spécifique, tout en excluant simultanément les enregistrements correspondant à des critères spécifiques d'une autre table. Un simple SELECT DISTINCT avec une clause ORDER BY et ROWNUM ne suffira pas en raison de l'interaction de ces éléments.

La solution utilise une sous-requête pour obtenir le résultat souhaité :

<code class="language-sql">SELECT *
FROM (
  SELECT DISTINCT 
  APP_ID, 
  NAME, 
  STORAGE_GB, 
  HISTORY_CREATED, 
  TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE  
  FROM HISTORY 
  WHERE 
    STORAGE_GB IS NOT NULL 
    AND NOT EXISTS (
      SELECT 1
      FROM HISTORY h2
      WHERE 
        h2.APP_ID = HISTORY.APP_ID
        AND TO_CHAR(h2.HISTORY_DATE, 'DD.MM.YYYY') ='06.02.2009'
    )
  ORDER BY STORAGE_GB DESC
)
WHERE 
  ROWNUM <= 10;</code>
Copier après la connexion

Cette approche filtre d'abord la table HISTORY dans la requête interne. La clause NOT EXISTS exclut efficacement les enregistrements où APP_ID correspond aux enregistrements avec HISTORY_DATE égal à « 06.02.2009 ». Les résultats sont ensuite classés par STORAGE_GB (décroissant). La requête externe applique la contrainte ROWNUM <= 10, garantissant que seuls les 10 premiers enregistrements sont renvoyés. Cette méthode applique correctement la limite de lignes après le filtrage et le classement, garantissant des résultats précis.

Remarque : NOT EXISTS offre généralement de meilleures performances que NOT IN pour ce type d'exclusion, en particulier avec des ensembles de données volumineux. Consultez la documentation Oracle pour d'autres stratégies d'optimisation des performances.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal