Cet article explique comment utiliser les requêtes de valeurs principales et les requêtes de total pour rechercher les dates les plus récentes ou les plus anciennes dans un ensemble d’enregistrements. Cela peut vous aider à répondre à diverses questions commerciales, telles que le moment où un client a passé une commande pour la dernière fois, ou les cinq trimestres qui ont été vos meilleurs pour les ventes, par ville.
Contenu de cet article
Vue d’ensemble
Vous pouvez classer les données et passer en revue les éléments les mieux classés à l’aide d’une requête de valeurs supérieures. Une requête de valeur supérieure est une requête select qui retourne un nombre spécifié ou un pourcentage de valeurs à partir de la partie supérieure des résultats, par exemple, les cinq pages les plus populaires sur un site web. Vous pouvez utiliser une requête de valeurs principales sur n’importe quel type de valeurs : il n’est pas obligé d’être des nombres.
Si vous souhaitez regrouper ou résumer vos données avant de les classer, vous n’avez pas besoin d’utiliser une requête de valeurs principales. Par exemple, supposons que vous deviez trouver les numéros de vente d’une date donnée pour chaque ville dans laquelle votre entreprise opère. Dans ce cas, les villes deviennent des catégories (vous devez rechercher les données par ville). Vous utilisez donc une requête de totaux.
Lorsque vous utilisez une requête de valeurs principales pour rechercher des enregistrements qui contiennent les dates les plus récentes ou les plus anciennes dans une table ou un groupe d’enregistrements, vous pouvez répondre à diverses questions professionnelles, telles que les suivantes :
-
Qui a fait le plus de ventes ces derniers temps ?
-
Quand un client a-t-il passé une commande pour la dernière fois ?
-
Quand seront les trois prochains anniversaires dans l’équipe ?
Pour créer une requête de valeur supérieure, commencez par créer une requête select. Ensuite, triez les données en fonction de votre question : si vous recherchez le haut ou le bas. Si vous avez besoin de regrouper ou de résumer les données, transformez la requête select en requête de totaux. Vous pouvez ensuite utiliser une fonction d’agrégation, telle que Max ou Min pour renvoyer la valeur la plus élevée ou la plus basse, ou First ou Last pour renvoyer la date la plus ancienne ou la plus récente.
Cet article suppose que les valeurs de date que vous utilisez ont le type de données Date/Heure. Si vos valeurs de date se trouvent dans un champ Texte, .
Envisagez d’utiliser un filtre au lieu d’une requête de valeurs supérieures
Un filtre est généralement préférable si vous avez une date spécifique à l’esprit. Pour déterminer si vous devez créer une requête de valeurs principales ou appliquer un filtre, tenez compte des points suivants :
-
Si vous souhaitez retourner tous les enregistrements dont la date correspond, est antérieure ou ultérieure à une date spécifique, utilisez un filtre. Par exemple, pour afficher les dates des ventes entre avril et juillet, vous appliquez un filtre.
-
Si vous souhaitez retourner une quantité spécifiée d’enregistrements qui ont les dates les plus récentes ou les plus récentes dans un champ, et que vous ne connaissez pas les valeurs de date exactes, ou qui n’ont pas d’importance, vous créez une requête de valeurs principales. Par exemple, pour afficher les cinq meilleurs trimestres de ventes, utilisez une requête de valeurs supérieures.
Pour plus d’informations sur la création et l’utilisation de filtres, consultez l’article Appliquer un filtre pour afficher les enregistrements sélectionnés dans une base de données Access.
Préparer des exemples de données à suivre avec les exemples
Les étapes décrites dans cet article utilisent les données des exemples de tableaux suivants.
La table Employees
|
LastName |
Prénom |
Adresse |
Ville |
CountryOrR egion |
Date de naissance |
Date d’embauche |
|
Jacques |
Étienne |
7, place Beaubernard |
Saint-Denis |
USA |
05-Fév-1968 |
10-juin-1994 |
|
Heloo |
Waleed |
52 avenue des anémones |
Valenciennes |
USA |
22 mai 1957 |
22-Nov-1996 |
|
Antoine |
Guido |
3122 75th Ave. S.W. |
Toulouse |
USA |
11-Nov-1960 |
11 mars 2000 |
|
Bagel |
Jean Philippe |
1 Impasse des vallées |
Paris |
UK |
22 mars 1964 |
22 juin 1998 |
|
Prix |
Julien |
2, av. de Slovaquie |
Marseille |
Mexique |
05-Juin-1972 |
05-Jan-2002 |
|
Hughes |
Christine |
3122 75th St. S. |
Toulouse |
USA |
23-Jan-1970 |
23-avr-1999 |
|
Riley |
Steve |
67, av. du Mali |
Nice |
USA |
14-avr-1964 |
14-Oct-2004 |
|
Birkby |
Dana |
2 Nosey Pkwy |
Brest |
USA |
29-Oct-1959 |
29 mars 1997 |
Table EventType
|
TypeID |
Type d’événement |
|
1 |
Lancement du produit |
|
2 |
Fonction d’entreprise |
|
3 |
Fonction privée |
|
4 |
Levée de fonds |
|
5 |
Salon commercial |
|
6 |
Conférence |
|
7 |
Concert |
|
8 |
Exhiber |
|
9 |
Foire de rue |
Table Consommateurs
|
CustomerID |
Société |
Coordonnées |
|
1 |
Contoso, Ltd. Graphisme |
Jonathan Haas |
|
2 |
Tailspin Toys |
Ellen Adams |
|
3 |
Fabrikam |
Carol Philips |
|
4 |
Wingtip Toys |
Lucio Iallo |
|
5 |
A. Datum |
Mandar Samant |
|
6 |
Adventure Works |
Brian Burke |
|
7 |
Design Institute |
Stèle de Jaka |
|
8 |
School of Fine Art |
Milena Duomanova |
La table Events
|
EventID (ID d’événement) |
Type d’événement |
Client |
Date de l’événement |
Prix |
|
1 |
Lancement du produit |
Contoso, Ltd. |
4/14/2011 |
10 000 € |
|
2 |
Fonction d’entreprise |
Tailspin Toys |
4/21/2011 |
8 000 € |
|
3 |
Salon commercial |
Tailspin Toys |
5/1/2011 |
25 000 $ |
|
4 |
Exhiber |
Graphic Design Institute |
5/13/2011 |
4 500 € |
|
5 |
Salon commercial |
Contoso, Ltd. |
5/14/2011 |
55 000 $ |
|
6 |
Concert |
School of Fine Art |
5/23/2011 |
12 000 € |
|
7 |
Lancement du produit |
A. Datum |
6/1/2011 |
15 000 € |
|
8 |
Lancement du produit |
Wingtip Toys |
6/18/2011 |
21 000 € |
|
9 |
Levée de fonds |
Adventure Works |
6/22/2011 |
1 300 $ |
|
10 |
Conférence |
Graphic Design Institute |
6/25/2011 |
2 450 $ |
|
11 |
Conférence |
Contoso, Ltd. |
04.07.11 |
3 800 $ |
|
12 |
Foire de rue |
Graphic Design Institute |
04.07.11 |
5 500 € |
Remarque : Les étapes décrites dans cette section supposent que les tables Customers et Event Type résident du côté « un » des relations un-à-plusieurs avec la table Events. Dans ce cas, la table Events partage les champs CustomerID et TypeID. Les requêtes de totaux décrites dans les sections suivantes ne fonctionneront pas sans ces relations.
Coller les exemples de données dans des feuilles de calcul Excel
-
Démarrez Excel. Un classeur vide s’ouvre.
-
Appuyez sur Maj+F11 pour insérer une feuille de calcul (vous en aurez besoin quatre).
-
Copiez les données de chaque exemple de table dans une feuille de calcul vide. Incluez les en-têtes de colonne (la première ligne).
Créer des tables de base de données à partir des feuilles de calcul
-
Sélectionnez les données de la première feuille de calcul, y compris les en-têtes de colonne.
-
Cliquez avec le bouton droit sur le volet de navigation, puis cliquez sur Coller.
-
Cliquez sur Oui pour confirmer que la première ligne contient des en-têtes de colonne.
-
Répétez les étapes 1 à 3 pour chacune des feuilles de calcul restantes.
Rechercher la date la plus ou la moins récente
Les étapes de cette section utilisent les exemples de données pour illustrer le processus de création d’une requête de valeurs principales.
Créer une requête de valeurs principales de base
-
Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.
-
Double-cliquez sur la table Employees, puis cliquez sur Fermer.
Si vous utilisez les exemples de données, ajoutez la table Employees à la requête.
-
Ajoutez les champs que vous souhaitez utiliser dans votre requête à la grille de conception. Vous pouvez double-cliquer sur chaque champ ou glisser-déplacer chaque champ sur une cellule vide de la ligne Champ .
Si vous utilisez l’exemple de table, ajoutez les champs Prénom, Nom et Date de naissance.
-
Dans le champ qui contient vos valeurs supérieures ou inférieures (champ Date de naissance, si vous utilisez l’exemple de table), cliquez sur la ligne Trier et sélectionnez Croissant ou Décroissant.
L’ordre de tri décroissant renvoie la date la plus récente, et l’ordre de tri croissant renvoie la date la plus ancienne.
Important : Vous devez définir une valeur dans la ligne Trier uniquement pour les champs qui contiennent vos dates. Si vous spécifiez un ordre de tri pour un autre champ, la requête ne retourne pas les résultats souhaités.
-
Sous l’onglet Création , dans le groupe Outils , cliquez sur la flèche vers le bas en regard de Tous (la liste Valeurs principales ), puis entrez le nombre d’enregistrements que vous souhaitez afficher ou sélectionnez une option dans la liste.
-
Cliquez sur Exécuter
pour exécuter la requête et afficher les résultats en mode Feuille de données. -
Enregistrez la requête sous NextBirthDays.
Vous pouvez voir que ce type de requête de valeurs principales peut répondre à des questions de base, telles que la personne la plus âgée ou la plus jeune de l’entreprise. Les étapes suivantes expliquent comment utiliser des expressions et d’autres critères pour ajouter de la puissance et de la flexibilité à la requête. Les critères indiqués à l’étape suivante retournent les trois prochains anniversaires des employés.
Ajouter des critères à la requête
Ces étapes utilisent la requête créée dans la procédure précédente. Vous pouvez suivre une autre requête de valeurs principales tant qu’elle contient des données date/heure réelles, et non des valeurs de texte.
Conseil : Si vous souhaitez mieux comprendre le fonctionnement de cette requête, basculez entre le mode Création et le mode Feuille de données à chaque étape. Si vous souhaitez voir le code de requête réel, basculez vers la vue SQL. Pour basculer entre les affichages, cliquez avec le bouton droit sur l’onglet en haut de la requête, puis cliquez sur l’affichage souhaité.
-
Dans le volet de navigation, cliquez avec le bouton droit sur la requête NextBirthDays, puis cliquez sur Mode Création.
-
Dans la grille de conception de requête, dans la colonne à droite de BirthDate, entrez la valeur suivante :MonthBorn : DatePart(« m »,[BirthDate]).Cette expression extrait le mois de BirthDate à l’aide de la fonction DatePart .
-
Dans la colonne suivante de la grille de conception de requête, entrez la valeur suivante :DayOfMonthBorn : DatePart(« d »,[BirthDate])Cette expression extrait le jour du mois de BirthDate à l’aide de la fonction DatePart .
-
Désactivez les zones case activée dans la ligne Afficher pour chacune des deux expressions que vous venez d’entrer.
-
Cliquez sur la ligne Trier pour chaque expression, puis sélectionnez Croissant.
-
Dans la ligne Critères de la colonne Date de naissance, tapez l’expression suivante :Month([Birth Date]) > Month(Date()) OR Month([Birth Date])= Month(Date()) AND Day([Birth Date])>Day(Date())Cette expression effectue les opérations suivantes :
-
Month( [Birth Date]) > Month(Date()) spécifie que la date de naissance de chaque employé tombe dans un mois futur.
-
Month ([Birth Date])= Month(Date()) And Day([Birth Date])>Day(Date()) spécifie que si la date de naissance a lieu dans le mois en cours, l’anniversaire tombe le ou après le jour courant.
En bref, cette expression exclut tous les enregistrements où l’anniversaire a lieu entre le 1er janvier et la date actuelle.
Conseil : Pour plus d’exemples d’expressions de critères de requête, consultez l’article Exemples de critères de requête.
-
-
Sous l’onglet Création , dans le groupe Configuration de la requête , tapez 3 dans la zone Retour .
-
Sous l’onglet Créer, dans le groupe Résultats, cliquez sur Exécuter
.
Remarque : Dans votre propre requête utilisant vos propres données, vous pouvez parfois voir plus d’enregistrements que vous avez spécifié. Si vos données contiennent plusieurs enregistrements qui partagent une valeur qui figure parmi les valeurs les plus élevées, votre requête renverra tous ces enregistrements, même si cela implique de renvoyer plus d’enregistrements que vous ne le souhaitez.
Rechercher les dates les plus récentes ou les moins récentes pour les groupes d’enregistrements
Vous utilisez une requête de totaux pour rechercher les dates les plus anciennes ou les plus récentes pour les enregistrements qui appartiennent à des groupes, tels que les événements regroupés par ville. Une requête de totaux est une requête select qui utilise des fonctions d’agrégation (telles que Group By, Min, Max, Count, First et Last) pour calculer des valeurs pour chaque champ de sortie.
Incluez le champ que vous souhaitez utiliser pour les catégories ( à regrouper par ) et le champ avec les valeurs que vous souhaitez synthétiser. Si vous incluez d’autres champs de sortie (par exemple, les noms des clients lorsque vous regroupez par type d’événement), la requête utilise également ces champs pour créer des groupes, en modifiant les résultats afin qu’ils ne répondent pas à votre question d’origine. Pour étiqueter les lignes à l’aide d’autres champs, vous créez une requête supplémentaire qui utilise la requête totaux comme source et ajoutez les champs supplémentaires à cette requête.
Conseil : La création de requêtes par étapes est une stratégie très efficace pour répondre à des questions plus avancées. Si vous rencontrez des difficultés pour faire fonctionner une requête complexe, déterminez si vous pouvez la décomposer en une série de requêtes plus simples.
Créer une requête de totaux
Cette procédure utilise l’exemple de table Events et l’exemple de table EventType pour répondre à cette question :
Quand a été l’événement le plus récent de chaque type d’événement, à l’exception des concerts ?
-
Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.
-
Double-cliquez sur les tables Events et EventType. Chaque table apparaît dans la section supérieure du concepteur de requêtes.
-
Double-cliquez sur le champ EventType de la table EventType et le champ EventDate de la table Events pour ajouter les champs à la grille de création de requête.
-
Dans la grille de conception de requête, dans la ligne Critères du champ EventType , entrez <>Concert.
Conseil : Pour plus d’exemples d’expressions de critères, consultez l’article Exemples de critères de requête.
-
Sous l’onglet Création , dans le groupe Afficher/Masquer , cliquez sur Totaux.
-
Dans la grille de création de requête, cliquez sur la ligne Total du champ EventDate, puis sur Max.
-
Sous l’onglet Création, dans le groupe Résultats, cliquez sur Affichage, puis sur Mode SQL.
-
Dans la fenêtre SQL, à la fin de la clause SELECT, juste après l’mot clé AS, remplacez MaxOfEventDate par MostRecent.
-
Enregistrez la requête sous MostRecentEventByType.
Créer une deuxième requête pour ajouter des données supplémentaires
Cette procédure utilise la requête MostRecentEventByType de la procédure précédente pour répondre à cette question :
Qui était le client lors de l’événement le plus récent de chaque type d’événement ?
-
Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête.
-
Sous l’onglet Requêtes , double-cliquez sur la requête MostRecentEventByType.
-
Sous l’onglet Tables , double-cliquez sur la table Events et la table Customers.
-
Dans le concepteur de requêtes, double-cliquez sur les champs suivants :
-
Dans la table Events, double-cliquez sur EventType.
-
Dans la requête MostRecentEventByType, double-cliquez sur MostRecent.
-
Dans la table Clients, double-cliquez sur Société.
-
-
Dans la grille de conception de requête, dans la ligne Trier de la colonne EventType , sélectionnez Croissant.
-
Sous l’onglet Créer, dans le groupe Résultats, cliquez sur Exécuter.