Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.18 KB | None | 0 0
  1. 1.Afficher le nombre total de livres
  2.  
  3. SELECT COUNT(*) AS NBR_LIVRES
  4. FROM LIVRE;
  5. // !! NOTE LE PROF PREFERE QU4ON EVITE DE METTRE DES * DANS LES COUNT() !!
  6. // EXEMPE METTRE UNE COLONNE N4AYANT JAMAIS UN ELEMENT NUL
  7.  
  8. 2.Afficher le nombre de livres ayant une cote supérieure à 4
  9.  
  10. SELECT COUNT(*) AS NBR_LIVRES
  11. FROM LIVRE
  12. WHERE COTE > 4;
  13.  
  14. 3. Afficher le nombre de livres publiés par année (de publication). Ordonnez le résultat dans
  15. l’ordre croissant des années
  16.  
  17. SELECT TO_CHAR(DATEPUBLICATION,'YYYY') AS ANNEEPUBLICATION, COUNT(*) AS TOTAL
  18. FROM LIVRE
  19. GROUP BY TO_CHAR(DATEPUBLICATION,'YYYY');
  20. ORDER BY TO_CHAR(DATEPUBLICATION,'YYYY');
  21.  
  22. 4.Afficher le nombre de livres par nom de catégorie
  23.  
  24. SELECT COUNT(*) AS TOTAL_LIVRES, C.NOM
  25. FROM LIVRE L
  26. JOIN CATEGORIE C ON C.NUMCATEGORIE = L.NUMCATEGORIE
  27. GROUP BY C.NOM
  28.  
  29. 5.Compter le nombre de livres écrit par chaque auteur. Afficher le résultat par ordre
  30. alphabétique inverse des noms d’auteur
  31.  
  32. SELECT COUNT(A.NUMAUTEUR) AS NBR_LIVRES, A.NOM
  33. FROM LIVRE L
  34. JOIN REDACTION R ON L.NUMLIVRE = R.NUMLIVRE
  35. JOIN AUTEUR A ON A.NUMAUTEUR = R.NUMAUTEUR
  36. GROUP BY A.NOM
  37. ORDER BY A.NOM DESC
  38.  
  39. 6. Quelle est la cote minimale et la cote maximale des livres ?
  40.  
  41. SELECT COTE, TITRE
  42. FROM LIVRE
  43. WHERE COTE = (SELECT MAX(COTE)
  44. FROM LIVRE )
  45.  
  46. UNION
  47.  
  48. SELECT COTE, TITRE
  49. FROM LIVRE
  50. WHERE COTE = (SELECT MIN(COTE)
  51. FROM LIVRE )
  52.  
  53. 7.Pour chaque livre, afficher le titre et le nombre d’exemplaires de chaque livre
  54.  
  55. SELECT L.TITRE, COUNT(*) AS NBR_EXEMPLAIRE
  56. FROM LIVRE L
  57. JOIN EXEMPLAIRE E ON E.NUMLIVRE = L.NUMLIVRE
  58. GROUP BY L.TITRE;
  59.  
  60. 8. Pour chaque livre, donner le titre du livre et le nombre d’exemplaires dans l’état 10
  61.  
  62. SELECT L.TITRE AS TITRE, COUNT(*) AS NBR_EXEMPLAIRE
  63. FROM LIVRE L
  64. JOIN EXEMPLAIRE E ON E.NUMLIVRE = L.NUMLIVRE
  65. WHERE L.COTE = 10
  66. GROUP BY L.TITRE;
  67.  
  68. 9. Trouver la durée moyenne d’un emprunt
  69.  
  70. SELECT AVG(DATERETOUR - DATELOCATION) AS DELAIS
  71. FROM LOCATION
  72.  
  73. 10. Afficher le nombre de locations par mois
  74.  
  75. SELECT COUNT(*) AS NBR_LOCATION, TO_CHAR(DATELOCATION, 'MM/YYYY') AS MOIS
  76. FROM LOCATION
  77. GROUP BY TO_CHAR(DATELOCATION, 'MM/YYYY');
  78.  
  79. 11. Trouver l’âge du plus jeune auteur
  80.  
  81. SELECT NOM, (SYSDATE-DATENAISSANCE)/365.256 AS AN
  82. FROM AUTEUR
  83. WHERE DATENAISSANCE = (SELECT MAX(DATENAISSANCE)
  84. FROM AUTEUR)
  85.  
  86. 12.Afficher les auteurs ayant écrit plus d’un livre.
  87.  
  88. SELECT A.NOM, COUNT(*)
  89. FROM AUTEUR A
  90. JOIN REDACTION R ON R.NUMAUTEUR = A.NUMAUTEUR
  91. GROUP BY A.NOM
  92. HAVING COUNT(*) > 1
  93.  
  94. 13. Combien de fois chaque exemplaire d’un livre a-t-il été emprunté (titre, num exemplaire,
  95. nbre) ? Présenter les résultats par ordre d’emprunt décroissant.
  96. SELECT LI.TITRE, LO.NUMEXEMPLAIRE, COUNT(*) AS NBRE
  97. FROM LOCATION LO
  98. JOIN LIVRE LI ON LI.NUMLIVRE = LO.NUMLIVRE
  99. GROUP BY LI.TITRE, LO.NUMEXEMPLAIRE
  100. ORDER BY NBRE DESC
  101.  
  102. 14. Idem mais uniquement pour les exemplaires empruntés plus d’une fois.
  103. SELECT LI.TITRE, LO.NUMEXEMPLAIRE, COUNT(*) AS NBRE
  104. FROM LOCATION LO
  105. JOIN LIVRE LI ON LI.NUMLIVRE = LO.NUMLIVRE
  106. GROUP BY LI.TITRE, LO.NUMEXEMPLAIRE
  107. HAVING COUNT(*) > 1
  108. ORDER BY NBRE DESC
  109.  
  110. 15. Afficher le nom des auteurs nés après la publication de « Sphinx »
  111. SELECT NOM, DATENAISSANCE
  112. FROM AUTEUR
  113. WHERE DATENAISSANCE < ALL(SELECT DATEPUBLICATION
  114. FROM LIVRE
  115. WHERE UPPER(TITRE) = 'SPHINX')
  116.  
  117.  
  118. 16. Afficher les livres (titre) ayant été critiqué par des emprunteurs n’ayant pas loué un
  119. exemplaire de ce livre.
  120. SELECT L.TITRE
  121. FROM LIVRE L
  122. JOIN CRITIQUE C ON C.NUMLIVRE = L.NUMLIVRE
  123. WHERE C.NUMEMPRUNTEUR NOT IN(SELECT LO.NUMEMPRUNTEUR
  124. FROM LOCATION LO
  125. WHERE LO.NUMLIVRE = L.NUMLIVRE)
  126.  
  127. 17. Afficher les titres et les cotes des livres dont la cote est inférieure à celle de « Virus ».
  128. SELECT L.TITRE, L.COTE
  129. FROM LIVRE L
  130. WHERE L.COTE < ALL(SELECT L2.COTE
  131. FROM LIVRE L2
  132. WHERE UPPER(L2.TITRE) = 'VIRUS')
  133.  
  134. 18. Afficher les noms et prénoms des emprunteurs dont la cotisation est plus élevée que
  135. celle de Kid Paddle.
  136. SELECT E.NOM, E.PRENOM, E.COTISATION
  137. FROM EMPRUNTEUR E
  138. WHERE E.COTISATION > ALL(SELECT E2.COTISATION
  139. FROM EMPRUNTEUR E2
  140. WHERE UPPER(E2.PRENOM) = 'KID' AND UPPER(E2.NOM) = 'PADDLE')
  141.  
  142. 19. Trouver les livres de la catégorie ‘Administration’ dont la cote est supérieure à toutes les
  143. cotes des livres de la catégorie ‘SQL’
  144. SELECT L.TITRE
  145. FROM LIVRE L
  146. JOIN CATEGORIE C ON C.NUMCATEGORIE = L.NUMCATEGORIE
  147. WHERE UPPER(C.NOM) = 'ADMINISTRATION'
  148. AND
  149. L.COTE > ALL(SELECT L2.COTE
  150. FROM LIVRE L2
  151. JOIN CATEGORIE C2 ON C2.NUMCATEGORIE = L2.NUMCATEGORIE
  152. WHERE UPPER(C2.NOM) = 'SQL')
  153.  
  154. 20. Quel est le titre du livre qui a la plus haute cote ?
  155. SELECT L.TITRE
  156. FROM LIVRE L
  157. WHERE L.COTE = (SELECT MAX(L2.COTE)
  158. FROM LIVRE L2)
  159.  
  160. 21. Combien de livres ont un exemplaire dans l’état 10 ?
  161. SELECT COUNT(L.NUMLIVRE)
  162. FROM LIVRE L
  163. WHERE L.NUMLIVRE = ANY(SELECT E.NUMLIVRE
  164. FROM EXEMPLAIRE E
  165. WHERE E.ETAT = 10)
  166.  
  167. 22. Trouver les titres des livres dont la cote moyenne des critiques est différente de la cote
  168. attachée au livre.
  169. SELECT L.TITRE
  170. FROM LIVRE L
  171. LEFT OUTER JOIN CRITIQUE C ON C.NUMLIVRE = L.NUMLIVRE
  172. GROUP BY L.TITRE, L.COTE
  173. HAVING AVG(C.COTE) <> L.COTE OR AVG(C.COTE) IS NULL
  174.  
  175. 23. En utilisant un opérateur ensembliste, trouvez les livres n’ayant fait l’objet d’aucune
  176. location.
  177. SELECT L.TITRE
  178. FROM LIVRE L
  179.  
  180. MINUS
  181.  
  182. SELECT L2.TITRE
  183. FROM LOCATION LO
  184. JOIN LIVRE L2 ON L2.NUMLIVRE = LO.NUMLIVRE;
  185.  
  186. 24. En utilisant l’opérateur [NOT] EXISTS, affichez les emprunteurs qui n’ont emprunté
  187. aucun livre. Ecrivez ensuite une variante utilisant un opérateur ensembliste.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement