Exercice sql server

Résolu/Fermé
salut
pourrai-le avoir des exercices sur sql server merçi ...

23 réponses

  1. je veux donne cette serie des exercices :
    1
    Exercice n°1
    Soit le modèle relationnel suivant relatif à une base de données sur des
    représentations musicales :
    REPRESENTATION (n°représentation, titre_représentation, lieu)
    MUSICIEN (nom, n°représentation*)
    PROGRAMMER (date, n°représentation*, tarif)
    Remarque : les clés primaires sont soulignées et les clés étrangères sont
    marquées par *
    Questions :
    1 - Donner la liste des titres des représentations.
    2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.
    3 - Donner la liste des noms des musiciens et des titres des représentations
    auxquelles ils participent.
    4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la

    2
    Correction de l'exercice n°1
    1 - Donner la liste des titres des représentations.
    SELECT titre_représentation FROM REPRESENTATION ;
    2 - Donner la liste des titres des représentations ayant lieu à l'opéra Bastille.
    SELECT titre_représentation FROM REPRESENTATION
    WHERE lieu="Opéra Bastille" ;
    3 - Donner la liste des noms des musiciens et des titres des représentations
    auxquelles ils participent.
    SELECT nom, titre_représentation
    FROM MUSICIEN, REPRESENTATION
    WHERE MUSICIEN.n°représentation = REPRESENTATION.n°représentation ;
    4 - Donner la liste des titres des représentations, les lieux et les tarifs pour la
    journée du 14/09/96.
    SELECT titre_représentation, lieu, tarif
    FROM REPRESENTATION, PROGRAMMER
    WHERE PROGRAMMER.n°représentation =
    REPRESENTATION.n°représentation
    AND date='14/06/96' ;

    Exercice n°2
    Soit le modèle relationnel suivant relatif à la gestion des notes annuelles d'une
    promotion d'étudiants :
    ETUDIANT(N°Etudiant, Nom, Prénom)
    MATIERE(CodeMat, LibelléMat, CoeffMat)
    EVALUER(N°Etudiant*, CodeMat*, Date, Note)
    Remarque : les clés primaires sont soulignées et les clés étrangères sont
    marquées par *
    Questions :
    1 - Quel est le nombre total d'étudiants ?
    2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la
    plus basse ?
    3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières ?
    4 - Quelles sont les moyennes par matière ?
    On utilisera la requête de la question 3 comme table source
    5 - Quelle est la moyenne générale de chaque étudiant ?
    On utilisera la requête de la question 3 comme table source
    6 - Quelle est la moyenne générale de la promotion ?
    On utilisera la requête de la question 5 comme table source
    7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou égale à
    la moyenne générale de la promotion ?
    On utilisera la requête de la question 5 comme table source

    4
    Correction de l'exercice n°2
    1 - Quel est le nombre total d'étudiants ?
    SELECT COUNT(*) FROM ETUDIANT ;
    2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la note la
    plus basse ?
    SELECT MIN(Note), MAX(Note) FROM EVALUER ;
    3 - Quelles sont les moyennes de chaque étudiant dans chacune des matières?
    SELECT ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat,
    AVG(Note) AS MoyEtuMat
    FROM EVALUER, MATIERE, ETUDIANT
    WHERE EVALUER.CodeMat = MATIERE.CodeMat
    AND EVALUER.N°Etudiant = ETUDIANT.N°Etudiant
    GROUP BY ETUDIANT.N°Etudiant, Nom, Prénom, LibelléMat, CoeffMat;
    4 - Quelles sont les moyennes par matière ?
    SELECT LibelléMat, AVG(MoyEtuMat)
    FROM MOYETUMAT
    GROUP BY LibelléMat ;
    5 - Quelle est la moyenne générale de chaque étudiant ?
    SELECT N°Etudiant, Nom, Prénom,
    SUM(MoyEtuMat*CoeffMat)/SUM(CoeffMat) AS MgEtu
    FROM MOYETUMAT
    GROUP BY N°Etudiant, Nom, Prénom ;
    6 - Quelle est la moyenne générale de la promotion ?
    Avec la vue MGETU de la question 5 :
    SELECT AVG(MgEtu)
    FROM MGETU ;
    7 - Quels sont les étudiants qui ont une moyenne générale supérieure ou
    égale à la moyenne générale de la promotion ?
    Avec la vue MGETU de la question 5 :
    SELECT N°Etudiant, Nom, Prénom, MgEtu
    FROM MGETU
    WHERE MgEtu >= (SELECT AVG(MgEtu) FROM MGETU) ;

    Exercice n°3
    Soit le modèle relationnel suivant relatif à la gestion simplifiée des étapes du
    Tour de France 97, dont une des étapes de type "contre la montre individuel" se
    déroula à Saint-Etienne :
    EQUIPE(CodeEquipe, NomEquipe, DirecteurSportif)
    COUREUR(NuméroCoureur, NomCoureur, CodeEquipe*, CodePays*)
    PAYS(CodePays, NomPays)
    TYPE_ETAPE(CodeType, LibelléType)
    ETAPE(NuméroEtape, DateEtape, VilleDép, VilleArr, NbKm, CodeType*)
    PARTICIPER(NuméroCoureur*, NuméroEtape*, TempsRéalisé)
    ATTRIBUER_BONIFICATION(NuméroEtape*, km, Rang, NbSecondes,
    NuméroCoureur*)
    Remarque : les clés primaires sont soulignées et les clés étrangères sont
    marquées par *
    Questions :
    1 - Quelle est la composition de l'équipe Festina (Numéro, nom et pays des
    coureurs) ?
    2 - Quel est le nombre de kilomètres total du Tour de France 97 ?
    3 - Quel est le nombre de kilomètres total des étapes de type "Haute
    Montagne"?
    4 - Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ?
    5 - Quels sont les noms des coureurs qui ont participé à toutes les étapes ?
    6 - Quel est le classement général des coureurs (nom, code équipe, code pays et
    temps des coureurs) à l'issue des 13 premières étapes sachant que les
    bonifications ont été intégrées dans les temps réalisés à chaque étape ?
    7 - Quel est le classement par équipe à l'issue des 13 premières étapes (nom et
    temps des équipes) ?
    COPEMED - Formation SGBD - ACCESS Tunis, 25 septembre – 2 octobre 2001
    6
    Correction de l'exercice n°3
    1 - Quelle est la composition de l'équipe FESTINA (Numéro, nom et pays des
    coureurs) ?
    SELECT NuméroCoureur, NomCoureur, NomPays
    FROM EQUIPE A, COUREUR B, PAYS C
    WHERE A.CodeEquipe=B.CodeEquipe And B.CodePays=C.CodePays
    And NomEquipe="FESTINA" ;
    2 - Quel est le nombre de kilomètres total du Tour de France 97 ?
    SELECT SUM(Nbkm) FROM ETAPE ;
    3 - Quel est le nombre de kilomètres total des étapes de type HAUTE
    MONTAGNE ?
    SELECT SUM(Nbkm) FROM ETAPE A, TYPE_ETAPE B
    WHERE A.CodeType=B.CodeType And LibelléType="HAUTE MONTAGNE" ;
    4 - Quels sont les noms des coureurs qui n'ont pas obtenu de bonifications ?
    SELECT NomCoureur FROM COUREUR
    WHERE NuméroCoureur NOT IN (SELECT NuméroCoureur FROM
    ATTRIBUER_BONIFICATION) ;
    5 - Quels sont les noms des coureurs qui ont participé à toutes les étapes ?
    SELECT NomCoureur FROM PARTICIPER A, COUREUR B
    WHERE A.NuméroCoureur=B.NuméroCoureur
    GROUP BY NuméroCoureur, NomCoureur
    HAVING COUNT(*)=(SELECT COUNT(*) FROM ETAPE) ;
    6 - Quel est le classement général des coureurs (nom, code équipe, code pays
    et temps des coureurs) à l'issue des 13 premières étapes sachant que les
    bonifications ont été intégrées dans les temps réalisés à chaque étape ?
    SELECT NomCoureur, CodeEquipe, CodePays, SUM(TempsRéalisé) AS Total
    FROM PARTICIPER A, COUREUR B
    WHERE A.NuméroCoureur=B.NuméroCoureur and NuméroEtape<=13
    GROUP BY A.NuméroCoureur, NomCoureur, CodeEquipe, CodePays
    ORDER BY Total;
    7 - Quel est le classement par équipe à l'issue des 13 premières étapes (nom et
    temps des équipes) ?
    SELECT NomEquipe, SUM(TempsRéalisé) AS Total
    FROM PARTICIPER A, COUREUR B, EQUIPE C
    WHERE A.NuméroCoureur=B.NuméroCoureur And
    B.CodeEquipe=C.CodeEquipe
    And NuméroEtape<=13
    GROUP BY B.CodeEquipe, NomEquipe
    ORDER BY Total;
    1. j'ai besion des exercices sql avec les corrigé c obligatiore merci d'avance
    2. Voila la correction de votre exercice et bon chance
  2. je voulais savoir comment afficher la moyenne des notes par epreuve par etablissement d'un examen en SQL
    1. svp j'ai une question :
      est ce qu'on est obliger d'utiliser à chaque fois :

      select A.num1 , B.num2
      from table1 A , table2 B
      where A.num1 = B.num2


      même si les noms des champs sont différents

      ou bien on peut écrire comme ça :

      select num1 , num2
      from table1 , table2
      where num1 = num2

      1. si parfois c'est obligatoire quand ça s'agit d'une jointure et qu'ont a le meme nom dans les deux tableau
    2. exercices corrigés sur les requêtes sql avec une interface de commande
      http://nte-socio.univ-lyon2.fr/Marc_Grange/SQL6.htm
      1. Bonjour tt le monde,
        Je viens de voir les exercices qu'a publié essadouq, le samedi 12 mai 2007 (y'a un peu de temp :-) ). Pr le 3ème exercice (celui du tour de france), je pense que la sixième requête ne répond pas à la question demandée, car on cherche le classement général des coureurs à l'issue des 13 premières étapes donc les coureurs doivent avoir parcouru les 13 premières étépes pr pouvoir faire ensuite leur classement, alors que la requête n'a pas répondu à cette exigence par la condition 'NuméroEtape<=13'.
        Je pense que la bonne réponse est la suivante:
        SELECT NomCoureur, codeEquipe, CodePays, Sum(TempRéalisé) as TempCoureur FROM Coureur C, Participer P
        WHERE C.NuméroCoureur = P.NuméroCoureur AND NuméroEtape between (1,13) AND count(distinct NuméroEtape) = 13
        GROUP BY NomCoureur

        On a éxigé un filtrage sur NuméroEtape: seulement ceux entre 1 et 13
        1. slt ana 9en9ra fi ista filiere devellopent informatique o 3andi mochekil fi sql svp sefedolya les excercice o la kan chiwahed 3ando l'examan ta3 hadak 3am o mesaho yesefdo lya
          1. Filière : TSDI Epreuve : Pratique
            Niveau : Technicien Spécialisé
            Durée : 4 h 00 Barème : 40 Pts

            Variante n° 1

            On veut développer une application qui gère les rencontres des tournois de Tennis d’une saison donnée.

            Chaque joueur a un nom et un sexe. Deux joueurs peuvent former une équipe. Un tournoi est identifié par son nom et se déroule dans un pays donné à une date prévue. À la fin d’un tournoi, un joueur ou une équipe participant à ce tournoi obtient un score qui représente le nombre de tours passés dans le tournoi (1er tour vaut 1 point, 2ème tour vaut 2 points, etc.). On attribue à chaque tournoi un coefficient selon son importance.
            Le score final d’un joueur (ou d’une équipe) est obtenu de la manière suivante :
            score  coefficient
            Pour les n tournois de l’année. Les joueurs (ou équipes) sont classés par ordre décroissant de leur score final.

            Pour assurer cette gestion, le schéma relationnel suivant a été établi :

            Joueur (NoJoueur, NomJoueur, Sexe, NoEquipe)
            Equipe (NoEquipe)
            Tournoi (NoTournoi, NomTournoi, Date, Coef, Pays)
            Jeu_Simple (NoJoueur, NoTournoi, Score_Joueur)
            Jeu_Double (NoEquipe, NoTournoi, Score_Equipe)

            TRAVAIL À FAIRE

            I Création de la base de données

            1. Créer la base de données sous SQL SERVER 2 pts
            2. Créer trois enregistrements par table

            II Application

            1. Créer une application MDI avec menu qui permet d’exécuter les traitements suivants : 1 Pt

            2. Mise à jour de la table Joueur. Prévoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer et des boutons de déplacement entre les enregistrements. 2 pts

            3. Mise à jour de la table Tournoi. Prévoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer et des boutons de déplacement entre les enregistrements. 2 pts

            4. Former des équipes constituées de deux joueurs ; l’utilisateur saisi le n° d’équipe et sélectionne les deux joueurs dans deux listes de choix 2 pts

            5. Enregistrer le score d’un jeu simple. 2 pts
            Tous les champs sont requis, le NoJoueur et le NoTournoi sont à choisir dans des zones de listes toutes les données du joueur choisi et le tournoi choisi sont affichées.

            6. Enregistrer le score d’un jeu double. 2 pts
            au choix de l’équipe, les noms des deux joueurs sont affichés.

            7. Créer un formulaire qui affiche pour un pays donné, tous les tournois qui s’y déroulent. Trier le résultat par importance de tournoi (coefficient) décroissante. 2 pts

            8. Calculer pour un joueur donné, ou une équipe le score total (somme des scores pondérés) . 2 pts

            9. Imprimer la liste des joueurs masculins participants à un tournoi donné 2 pts

            10. Imprimer les dix premiers joueuses classées en ordre décroissant (selon le score final) 2 pts

            11. Créer un graphique représentant le nombre de participants par pays de tournoi 3 pts

            12. Créer un programme d‘installation de votre application 3 pts
            Le programme d’installation doit créer la base de données si elle n’existe pas.

            III Web

            13. Créer une page Web renvoyant tous les tournois de l’année (NomTournoi, Date, Coef) 2 pts

            14. au clic sur le nom d’un tournoi l’utilisateur peut afficher la liste des joueurs y participants 2 pts

            15. Au clic sur le nom d’un joueur, afficher la lise des tournois, auxquels il a participé triés par date 2 pts

            16. Prévoir un formulaire d ‘enregistrement d’un joueur via une interface Web. Le joueur doit remplir toutes les informations relatives aux champs des tables Joueur, Equipe et Tournoi. (Le contrôle de saisie est obligatoire) 2 pts

            17. A la validation d’un enregistrement, un code de six caractères doit être généré, ce code va permettre au joueur de se connecter pour faire une mise à jour des données saisies via l’interface Web.
            • Le code généré est unique pour chaque joueur doit être enregistré dans la base de données ( Faire les modifications nécessaires) 2 Pts
            18. Prévoir une interface d’authentification des joueurs enregistrés. Le joueur doit saisir son Nom et son Code (Code généré) et une fois les données sont correctes, seules les informations relatives au joueur seront affichées dans une page web 3 Pts
          2. Filière : TSDI Epreuve : Pratique
            Niveau : Technicien Spécialisé
            Durée : 4 h 00 Barème : 40 Pts

            Variante n° 1

            On veut développer une application qui gère les rencontres des tournois de Tennis d’une saison donnée.

            Chaque joueur a un nom et un sexe. Deux joueurs peuvent former une équipe. Un tournoi est identifié par son nom et se déroule dans un pays donné à une date prévue. À la fin d’un tournoi, un joueur ou une équipe participant à ce tournoi obtient un score qui représente le nombre de tours passés dans le tournoi (1er tour vaut 1 point, 2ème tour vaut 2 points, etc.). On attribue à chaque tournoi un coefficient selon son importance.
            Le score final d’un joueur (ou d’une équipe) est obtenu de la manière suivante :
            score  coefficient
            Pour les n tournois de l’année. Les joueurs (ou équipes) sont classés par ordre décroissant de leur score final.

            Pour assurer cette gestion, le schéma relationnel suivant a été établi :

            Joueur (NoJoueur, NomJoueur, Sexe, NoEquipe)
            Equipe (NoEquipe)
            Tournoi (NoTournoi, NomTournoi, Date, Coef, Pays)
            Jeu_Simple (NoJoueur, NoTournoi, Score_Joueur)
            Jeu_Double (NoEquipe, NoTournoi, Score_Equipe)

            TRAVAIL À FAIRE

            I Création de la base de données

            1. Créer la base de données sous SQL SERVER 2 pts
            2. Créer trois enregistrements par table

            II Application

            1. Créer une application MDI avec menu qui permet d’exécuter les traitements suivants : 1 Pt

            2. Mise à jour de la table Joueur. Prévoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer et des boutons de déplacement entre les enregistrements. 2 pts

            3. Mise à jour de la table Tournoi. Prévoir les boutons : Ajouter, Modifier, Enregistrer, Supprimer, Fermer et des boutons de déplacement entre les enregistrements. 2 pts

            4. Former des équipes constituées de deux joueurs ; l’utilisateur saisi le n° d’équipe et sélectionne les deux joueurs dans deux listes de choix 2 pts

            5. Enregistrer le score d’un jeu simple. 2 pts
            Tous les champs sont requis, le NoJoueur et le NoTournoi sont à choisir dans des zones de listes toutes les données du joueur choisi et le tournoi choisi sont affichées.

            6. Enregistrer le score d’un jeu double. 2 pts
            au choix de l’équipe, les noms des deux joueurs sont affichés.

            7. Créer un formulaire qui affiche pour un pays donné, tous les tournois qui s’y déroulent. Trier le résultat par importance de tournoi (coefficient) décroissante. 2 pts

            8. Calculer pour un joueur donné, ou une équipe le score total (somme des scores pondérés) . 2 pts

            9. Imprimer la liste des joueurs masculins participants à un tournoi donné 2 pts

            10. Imprimer les dix premiers joueuses classées en ordre décroissant (selon le score final) 2 pts

            11. Créer un graphique représentant le nombre de participants par pays de tournoi 3 pts

            12. Créer un programme d‘installation de votre application 3 pts
            Le programme d’installation doit créer la base de données si elle n’existe pas.

            III Web

            13. Créer une page Web renvoyant tous les tournois de l’année (NomTournoi, Date, Coef) 2 pts

            14. au clic sur le nom d’un tournoi l’utilisateur peut afficher la liste des joueurs y participants 2 pts

            15. Au clic sur le nom d’un joueur, afficher la lise des tournois, auxquels il a participé triés par date 2 pts

            16. Prévoir un formulaire d ‘enregistrement d’un joueur via une interface Web. Le joueur doit remplir toutes les informations relatives aux champs des tables Joueur, Equipe et Tournoi. (Le contrôle de saisie est obligatoire) 2 pts

            17. A la validation d’un enregistrement, un code de six caractères doit être généré, ce code va permettre au joueur de se connecter pour faire une mise à jour des données saisies via l’interface Web.
            • Le code généré est unique pour chaque joueur doit être enregistré dans la base de données ( Faire les modifications nécessaires) 2 Pts
            18. Prévoir une interface d’authentification des joueurs enregistrés. Le joueur doit saisir son Nom et son Code (Code généré) et une fois les données sont correctes, seules les informations relatives au joueur seront affichées dans une page web 3 Pts
          3. stttttttttp siham bientoo EFF si t'as recu la correction de cette variante tu me l passe le plus tot possible surtt la partie d WEB
        2. soit le modele rela tionnel suivant:
          DEPT</gras>(DNO, DNOM,DIR,VILLE)
          EMP(ENO,ENOM,PROF,DATEEMB,SAL,COMM,DNO)

          1°aficher le nom du département de chaque employé
          2°donner les emplois ayant le salaire moyen le plus bas;donnez aussi leur salaire moyen
          3°donner la liste des employés ayant une commission
          4°donner le nombre d'employés du departement PRODUCTION
          5°les numeros de departement et leur salaire maximum
          6°les professions et leurs salaires moyen
          7°donner les departements qui n'ont pas d'employés
          1. bonjour tout le monde
            voila quelque exercices +corriger en sql server et moi aussi on ai entrain de commençais le cours de sql j'ai pas bien maitriser mais avec des exercices nchaelah nchdouh :

            *Afficher la liste des employés (nom et prénom) embauchés entre 1993 et 1995
            select nom, prenom
            from employes
            where year(date_embauche) between 1993 and 1995
            order by nom
            *Afficher le nombre total de produits différents qui appartiennent à la catégorie 2, 3, 4, 5 ou 8. (le code_catégorie est en format texte).
            select count(*) as "total catégories 2,3,4,5,8"
            from produits
            where code_categorie in ('2','3','4','5','8')
            Afficher la liste des employés (nom, prénom, fonction) dont la fonction est « responsable » de quelque chose (ex : « responsable des ventes », « responsable du personnel » …)
            select nom, prenom, fonction
            from employes
            where fonction like 'responsable%'
            order by fonction
            Afficher le montant total commandé (sans tenir compte de la remise) pour toutes les commandes dont le numéro est supérieur à 150 (on affichera également le numéro de commande)
            select n_commande, sum(prix_unitaire*quantite) as total
            from details_commandes
            where n_commande > 11050
            group by n_commande
            order by n_commande
            Afficher pour chaque client (code_client) le plus grand délai constaté entre la passation de la commande et l’envoi des produits, ceci pour les clients livrés en France .Vous ne ferez apparaître que les clients qui ont un délai > 20 jours..
            select code_client, max(date_envoi-date_commande) as delai
            from commandes
            where pays_livraison = 'france'
            group by code_client
            having delai > 20
            order by delai, code_client
            Afficher la liste des commandes (numéro de commande, date de la commande) passées entre 1992 et 1994.
            select n_commande, date_commande
            from commandes
            where year(date_commande) between 1992 and 1994
            order by date_commande
            Afficher la liste des produits (référence, nom, prix unitaire) dont le nom commence par « C »
            select ref_produit, nom_du_produit, prix_unitaire
            from produits
            where nom_du_produit like 'C%'
            order by ref_produit
            Afficher le nombre total de fournisseurs qui habitent soit en France, soit aux USA, soit en Allemagne.
            select count(*)
            from fournisseurs
            where pays in ('france', 'usa', 'allemagne')
            Afficher le montant total commandé pour toutes les commandes dont le numéro est inférieur ou égal à 10270 (NB : on affichera également le numéro de commande).
            select n_commande, sum(prix_unitaire * quantite) as total
            from details_commandes
            where n_commande <= 10270
            group by n_commande
            Afficher pour chaque catégorie de produit (code_catégorie) le nombre total d’unités commandées (NB : on utilisera ici le champ unités_commandées de la table produits).
            On se limitera aux codes de catégories plus petites que 5 et au nombre total d’unités commandées supérieures à 100
            select code_categorie, sum(unites_commandees) as total
            from produits
            where code_categorie < 5
            group by code_categorie
            having total >100
            Liste des commandes (numéro commande, date de la commande, date d’envoi) pour lesquelles l’envoi doit intervenir au plus tard 2 semaines après la commande et dont le département de livraison est 75.
            select n_commande, date_commande, date_envoi
            from commandes
            where left(code_postal_livraison,2) = '75'
            and date_envoi - date_commande < 14
            Afficher le prix du produit le moins cher pour l’ensemble des catégories 2, 4 et 5.
            select min(prix_unitaire)
            from produits
            where code_categorie in (2,4,5)
            Liste des produits (référence, nom et prix unitaire) dont le prix est compris entre 50 et 80 classés par ordre de prix et par noms de produits.
            select ref_produit, nom_du_produit, prix_unitaire
            from produits
            where prix_unitaire between 50 and 80
            order by prix_unitaire, nom_du_produit
            Moyenne d’age des employés selon leur fonction.
            select fonction, avg(year(current date) - year(date_naissance))
            from employes
            group by fonction
            Trouver les pays pour lesquels nous avons 3 clients ou plus qui sont « propriétaire », « acheteur » ou « chefs des ventes »
            select count(*) as "nbre clients", pays
            from clients
            where fonction in ('proprietaire', 'acheteur', 'chef des ventes')
            group by pays
            having "nbre clients" >=3
            Sélectionner toutes les commandes (numéro de commandes, date de la commande, nom du client) passées par le client dont le code est « ALFKI ».
            SELECT n_commande, date_commande, societe FROM commandes cd,
            clients c WHERE c.code_client = cd.code_client AND c.code_client = 'ALFKI'
            Afficher pour chaque client (code_client) le nombre de commandes passées auprès d’un employé français.
            SELECT code_client , count(*) FROM commandes cd
            JOIN employes e on cd.n_employe = cd. n_employe
            WHERE e.pays = ‘France’
            GROUP BY code_client
            Afficher le nombre d’articles par commande (avec le numéro de commande), pour les commandes qui comportent plus de 5 articles.
            SELECT n_commande, count(*) as nb
            FROM details_commandes
            GROUP BY n_commande
            HAVING nb > 5
            Montant total commandé (sans tenir compte de la remise) pour chaque produit dont le PU est égal à 90. On affichera la référence du produit, son nom ainsi que le montant total commandé.
            SELECT p.ref_produit, p.nom_du_produit, sum(quantité * p.prix_unitaire) FROM details_commandes d, produits p WHERE d.ref_produit = p. ref_produit
            AND p.prix_unitaire = 90
            GROUP BY ref_produit, p.nom_du_produit
            Afficher pour chaque produit (référence du produit, nom du produit) de la catégorie « 2 » (utiliser le code catégorie qui est en format texte) le nombre total de produits commandés (nb : on utilisera la quantité de la table détails_commandes).
            NB : on ne désire pas voir apparaître les produits pour lesquels on a pas commandé plus de 100 unités.
            SELECT nom_du_produit, sum(quantite) FROM produits p, details_commandes d
            WHERE p.ref_produit = d.ref_produit
            AND p.code_categorie = ‘2’
            GROUP BY p.ref_produit, p.nom_du_produit
            HAVING sum(quantite) > 100
            Sélectionner tous les produits (numéro de produit, nom produit, nom catégorie) dont le code catégorie est 3 (NB : le code catégorie est stocké en format texte).
            SELECT ref_produit,nom_du_produit, nom_de_categorie
            FROM produits, categorie
            WHERE produits.ref_produit=categorie.code_categorie
            AND categorie.code_categorie='3'
            Afficher pour chaque employé (numéro employé) le nombre de commandes passées.
            SELECT n_employe, count(*)
            FROM commandes
            GROUP BY n_employe
            Afficher le nombre de produits par catégorie (avec le code catégorie et le nom de la catégorie), pour les catégories qui comportent plus de 5 produits.
            SELECT c.code_categorie, c.nom_de_categorie, count(p.ref_produit) as tot
            FROM Categories c, produits p
            WHERE p.code_categorie = c.code_categorie
            GROUP BY c.code_categorie, c.nom_de_categorie
            HAVING tot > 5
            Valorisation du stock (en francs) pour chaque produit dont le fournisseur habite aux états-unis. On affichera la référence du produit, son nom ainsi que le montant de la valorisation.
            SELECT p.ref_produit, p.nom_du_produit, p.prix_unitaire*unites_en_stock
            FROM produits p, fournisseurs f
            WHERE f.n_fournisseur = p.n_fournisseur
            AND f.pays = 'Etats-unis'
            Afficher pour toutes les commandes (numéro commande, date de la commande) livrées dans la ville d’Arhus le montant total facturé (sans tenir compte de la remise). NB : on ne souhaite pas voir apparaître les commandes dont le montant total facturé est inférieur à 5000.
            SELECT c.n_commande, c.date_commande, sum(prix_unitaire * quantite) as tot
            FROM commandes c, details_commandes d
            WHERE d.n_commande = c.n_commande
            AND ville_livraison = 'arhus'
            GROUP BY c.n_commande, c.date_commande
            HAVING tot >5000
            Afficher la liste des fournisseurs (nom société) qui proposent au moins un produit dont le prix est inférieur ou égal à 25. NB : On ne demande pas d’afficher le nombre de produits proposés par chaque fournisseur.
            SELECT societe FROM Fournisseurs f, produits p
            f.n_fournisseur = p.n_fournisseur
            AND p.prix_unitaire <=25
            GROUP BY societe
            Afficher pour chaque client (nom société) le nombre total d’unités commandées pour le produit dont la référence est 1 (ref_produit est en format texte). On présentera les résultats par ordre alphabétique des noms de société.
            SELECT societe, sum(quantite) FROM clients c, commandes cd, details_commandes d
            WHERE cd.code_client = c.code_client AND d.n_commande = cd.n_commande
            AND ref_produit = 1
            GROUP BY societe
            ORDER BY societe
            Afficher pour chaque client (nom société) le nombre total de commandes à livrer après le 31 mai 1994 (utiliser le champ a_livrer_avant). Si ce nombre est inférieur à 10, on n’affichera pas le client.
            SELECT societe, count(n_commande) as nb FROM clients c, commandes cd
            WHERE cd.code_client = c.code_client
            AND a_livrer_avant >= '1994-05-31'
            GROUP BY societe
            HAVING nb >=10
            Afficher le nombre total d’unités commandées (utiliser le champ unites_commandees) pour chaque fournisseur (on affichera également le numéro du fournisseur et le nom de la société).
            NB : on ne désire pas voir apparaître les fournisseurs qui n’ont rien commandé.
            SELECT p.n_fournisseur, societe, sum(unites_commandees) as total FROM Fournisseurs f, produits p
            WHERE f.n_fournisseur = p.n_fournisseur
            GROUP BY p.n_fournisseur, societe
            HAVING total <>0
            Afficher le nombre d’employés embauchés entre 1993 et 1999 et qui n’habitent pas au Brésil, en Argentine, au Paraguay, au Chili ou à Cuba. Nb : on ne veut obtenir qu’un seul nombre.
            SELECT count(*) from employes
            WHERE year(date_embauche) between 1993 and 1999 and pays NOT IN ('bresil', 'argentine', 'paraguay', 'chili', 'cuba')
            Afficher pour chaque commande (numéro commande, date de commande) le nombre de produits différents commandés dont le prix unitaire est >= 150
            SELECT c.n_commande, date_commande, count(ref_produit) FROM commandes c, details_commandes d WHERE c.n_commande = d.n_commande
            AND d.prix_unitaire>=150
            GROUP BY c.n_commande, date_commande
            Afficher pour chaque messager (numéro messager, nom messager) le nombre de commandes passées.
            SELECT m.n_messager, nom_du_messager, count(n_commande)
            FROM messagers m, commandes c
            WHERE c.n_messager = m.n_messager
            GROUP BY m.n_messager, nom_du_messager
            Afficher la liste des catégories (nom catégorie, code catégorie, nombre d’unités en stock) pour lesquelles le nombre total d’unités en stock est inférieur à 200
            SELECT c.code_categorie, nom_de_categorie, sum(unites_en_stock) as stock FROM categories c , produits p WHERE p.code_categorie = c.code_categorie
            GROUP BY c.code_categorie, nom_de_categorie
            HAVING stock <=200
            Afficher pour chaque destinataire (nom destinataire) le nombre total de produits commandés qui ont la référence 2. On présentera les résultats par ordre alphabétique des noms de destinataire.
            SELECT destinataire, sum(quantite) FROM commandes cd, details_commandes d
            WHERE d.n_commande = cd.n_commande
            AND ref_produit = 2
            GROUP BY destinataire
            ORDER BY destinataire
            Afficher pour les catégories 1, 3, 5, 7 et 8 le nombre total d’unités commandées (utiliser le champ « unites_commandees » de la table produits)
            On affichera le code de la catégorie et le nom de la catégorie si le nombre total d’unités commandées est différent de 0.
            SELECT c.code_categorie, nom_de_categorie, sum (unites_commandees) as tot
            FROM produits p, categories c
            WHERE c.code_categorie=p.code_categorie
            AND c.code_categorie IN (1,3,5,7,8)
            GROUP BY c.code_categorie, nom_de_categorie
            HAVING tot <> 0
            Liste des employés qui habitent dans une ville où se situe au moins 1 fournisseur
            SELECT DISTINCT f.Ville, e.Nom FROM Fournisseurs f, Employes e
            WHERE f.Ville = e.Ville
            Afficher pour chaque ville de mes fournisseurs le nombre d'employés travaillant dans cette ville
            SELECT f.Ville, count(N_employe) from Fournisseurs f, Employes e
            WHERE f.Ville *= e.Ville
            GROUP BY f.Ville
            Afficher la liste des clients qui n'ont jamais commandé à un fournisseur du royaume-uni
            SELECT * FROM Clients where Code_client not in (
            SELECT distinct co.Code_client
            FROM Commandes co, Details_commandes dc, Produits pro, Fournisseurs f
            WHERE co.N_commande=dc.N_commande and dc.Ref_produit=pro.Ref_produit
            AND f.N_fournisseur = pro.N_fournisseur
            AND f.Pays = 'Royaume-Uni')
            Afficher le CA de l'année 1994 pour les clients qui n'ont rien commandé en 1995
            SELECT co.Code_client, sum(dc.Prix_unitaire * Quantite)
            FROM Commandes co, Details_commandes dc
            WHERE co.N_commande=dc.N_commande
            and year(Date_commande)=1994
            and co.Code_client not in (
            SELECT co.Code_client
            FROM Commandes co, Details_commandes dc
            WHERE co.N_commande=dc.N_commande
            and year(Date_commande)=1995
            GROUP BY co.Code_client )
            GROUP BY co.Code_client
            Afficher la liste de toutes les villes qui contiennent au moins 1 client ou 1 fournisseur
            SELECT Ville from Fournisseurs UNION SELECT Ville from Clients
            ORDER BY Ville
            1. merci boko mensieur si vs avez d'autre exerc envoie le moi sur
              talal1029@hotmail.com
              1. Bonjour, je cherche des exerices du procedure stockée,les fonction,les curseurs et les triggers plus leurs solutions
                1. Bonjour,
                  j'ai besoin de ton aide j'ai besoin de telecharger sql serveur et je sais pas comment
                  1. merci essadouq j'ai passé mon exam ds sql et j l'ai réussi :) mais j vais travailler cette série .
                    dis moi t poura m'aider si j saurais po repondre :d:d:d
                    • 1
                    • 2