Advertisement
IsakViste

L1: TPDragons

May 17th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* INSTRUCTIONS
  2. psql -h dbserver
  3. \H
  4. \o output.html
  5. \i TPscript.sql
  6. */
  7.  
  8. /* 1: Dragons qui crachent du feu */
  9. SELECT "Dragon"
  10. FROM "Dragons"."Table Dragon"
  11. WHERE "CracheFeu" = true;
  12.  
  13. /* 2: Dragons males qui crachent du feu */
  14. SELECT "Dragon"
  15. FROM "Dragons"."Table Dragon"
  16. WHERE "CracheFeu" = true
  17. AND "Sexe" = 'M';
  18.  
  19. /* 3: Liste des dragons femelles dans l'ordre decroissant de leur longueur */
  20. SELECT *
  21. FROM "Dragons"."Table Dragon"
  22. WHERE "Sexe" = 'F'
  23. ORDER BY "Longueur" DESC;
  24.  
  25. /* 4: Rapport Moyen Longueur-Ecailles male puis femelle */
  26. SELECT "Dragon","Ecailles"/"Longueur"
  27. FROM "Dragons"."Table Dragon"
  28. WHERE "Sexe" = 'M';
  29.  
  30. SELECT "Dragon","Ecailles"/"Longueur"
  31. FROM "Dragons"."Table Dragon"
  32. WHERE "Sexe" = 'F';
  33.  
  34. /* 5: Dragons amoureux */
  35. SELECT "DragonAimant"
  36. FROM "Dragons"."Table Amours";
  37.  
  38. /* 6: Dragons qui ne sont pas amoureux */
  39. SELECT "Dragon"
  40. FROM "Dragons"."Table Dragon"
  41. WHERE "Dragon"
  42. NOT IN  (
  43.     SELECT "DragonAimant" FROM "Dragons"."Table Amours"
  44.     );
  45.  
  46. /* 7: Qui aime qui passionnement */
  47. SELECT *
  48. FROM "Dragons"."Table Amours"
  49. WHERE "Force" = 'passionnement';
  50.  
  51. /* 8: Qui aime qui au moins passionnement */
  52. SELECT *
  53. FROM "Dragons"."Table Amours"
  54. WHERE "Force" = 'passionnement'
  55. OR "Force" = 'a la folie';
  56.  
  57. /* 9: Liste des couples qui s'aiment mutuellement */
  58. SELECT "DragonAimant","DragonAime"
  59. FROM "Dragons"."Table Amours"
  60. WHERE "DragonAimant"
  61. IN  (
  62.     SELECT "DragonAime" FROM "Dragons"."Table Amours"
  63.     )
  64. AND "DragonAime"
  65. IN  (
  66.     SELECT "DragonAimant" FROM "Dragons"."Table Amours"
  67.     );
  68.  
  69. /* 10: Q9 mais en supprimant les faux doublons */
  70. SELECT "DragonAime"
  71. FROM "Dragons"."Table Amours"
  72. WHERE "DragonAimant"
  73. IN  (
  74.     SELECT "DragonAime" FROM "Dragons"."Table Amours"
  75.     )
  76. AND "DragonAime"
  77. IN  (
  78.     SELECT "DragonAimant" FROM "Dragons"."Table Amours"
  79.     );
  80.  
  81. /* 11: Noms des Dragonnes aimees par tous les dragons machos */
  82. SELECT "DragonAime"
  83. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  84. WHERE "Dragon" = "DragonAimant"
  85. AND "Sexe" = 'M'
  86. AND "EnAmour" = 'macho'
  87.  
  88. INTERSECT SELECT "DragonAimant"
  89. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  90. WHERE "Dragon" = "DragonAime";
  91.  
  92. /* 12: Noms des Dragonnes aimees que par des dragons timides  */
  93. SELECT "DragonAime"
  94. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  95. WHERE "Dragon" = "DragonAimant"
  96. AND "Sexe" = 'M'
  97. AND "EnAmour" = 'timide'
  98.  
  99. INTERSECT SELECT "DragonAimant"
  100. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  101. WHERE "Dragon" = "DragonAime";
  102.  
  103. /* 13: Produits hypo-calories (< 10 calories) */
  104. SELECT *
  105. FROM "Dragons"."Table nourriture"
  106. WHERE "Calories" < 10;
  107.  
  108. /* 14: Dragons qui mange des oeufs */
  109. SELECT "Dragon"
  110. FROM "Dragons"."Table Repas"
  111. WHERE "Produit" = 'oeuf';
  112.  
  113. /* 15: Dragonnes qui mangent des oeufs */
  114. SELECT "Dragon"
  115. FROM "Dragons"."Table Dragon"
  116. WHERE "Sexe" = 'F'
  117.  
  118. INTERSECT SELECT "Dragon"
  119. FROM "Dragons"."Table Repas"
  120. WHERE "Produit" = 'oeuf';
  121.  
  122. /* 16: Dragons qui mangent pas */
  123. SELECT "Dragon"
  124. FROM "Dragons"."Table Dragon"
  125.  
  126. EXCEPT SELECT DISTINCT "Dragon"
  127. FROM "Dragons"."Table Repas";
  128.  
  129. /* 17: Produits non hypo-calories consommer par dragons males crachant du feu */
  130. SELECT DISTINCT "Dragons"."Table nourriture"."Produit"
  131. FROM "Dragons"."Table nourriture","Dragons"."Table Repas","Dragons"."Table Dragon"
  132. WHERE "Dragons"."Table nourriture"."Calories" >= 10
  133. AND "Dragons"."Table nourriture"."Produit" = "Dragons"."Table Repas"."Produit"
  134. AND "Dragons"."Table Repas"."Dragon" = "Dragons"."Table Dragon"."Dragon"
  135. AND "Dragons"."Table Dragon"."Sexe" = 'M'
  136. AND "Dragons"."Table Dragon"."CracheFeu" = true;
  137.  
  138. /* 18: Noms des Dragons qui mangent de tout */
  139. SELECT "Dragon"
  140. FROM "Dragons"."Table Repas", "Dragons"."Table nourriture"
  141. WHERE "Dragons"."Table Repas"."Produit" = "Dragons"."Table nourriture"."Produit"
  142. GROUP BY "Dragon"
  143. HAVING COUNT("Dragons"."Table Repas"."Produit") = (
  144.     SELECT COUNT(DISTINCT "Produit")
  145.     FROM "Dragons"."Table nourriture"
  146.     );
  147.  
  148. /* 19: Nombre de Calories par chaque dragon lors d'un repas, classer dans l'ordre croissant du total des calories */
  149. SELECT "Dragon", SUM("Quantite" * "Calories")
  150. FROM "Dragons"."Table Repas", "Dragons"."Table nourriture"
  151. WHERE "Dragons"."Table Repas"."Produit" = "Dragons"."Table nourriture"."Produit"
  152. GROUP BY "Dragon"
  153. ORDER BY (SUM("Quantite" * "Calories")) DESC;
  154.  
  155. /* 20: --- */
  156. SELECT "Dragons"."Table Dragon"."Dragon", SUM(1 * "Calories" * "Quantite" / "Longueur")
  157. FROM "Dragons"."Table Repas", "Dragons"."Table Dragon", "Dragons"."Table nourriture"
  158. WHERE "Dragons"."Table Dragon"."Dragon" = "Dragons"."Table Repas"."Dragon"
  159. AND "Dragons"."Table nourriture"."Produit" = "Dragons"."Table Repas"."Produit"
  160. AND "CracheFeu" = true
  161. GROUP BY "Dragons"."Table Dragon"."Dragon"
  162. ORDER BY (SUM(1 * "Calories" * "Quantite" / "Longueur")) DESC;
  163.  
  164. /* 21: Dragons qui mangent pas et qui aiment personne */
  165. SELECT "Dragon"
  166. FROM "Dragons"."Table Dragon"
  167.  
  168. EXCEPT SELECT DISTINCT "Dragon"
  169. FROM "Dragons"."Table Repas"
  170.  
  171. EXCEPT SELECT DISTINCT "DragonAimant"
  172. FROM "Dragons"."Table Amours";
  173.  
  174. /* 22: Produits consommes par les dragons aimant a la folie */
  175. SELECT DISTINCT "Produit"
  176. FROM "Dragons"."Table Repas", "Dragons"."Table Amours"
  177. WHERE "Dragons"."Table Amours"."DragonAimant" = "Dragons"."Table Repas"."Dragon"
  178. AND "Force" = 'a la folie';
  179.  
  180. /* 23: Dragonnes dont au moins un pretendant fais la greve de la faim */
  181. SELECT DISTINCT "DragonAime"
  182. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  183. WHERE "Dragons"."Table Amours"."DragonAime" = "Dragons"."Table Dragon"."Dragon"
  184. AND "Sexe" = 'F'
  185. AND "DragonAimant" IN (
  186.     SELECT "Dragon"
  187.     FROM "Dragons"."Table Dragon"
  188.  
  189.     EXCEPT SELECT DISTINCT "Dragon"
  190.     FROM "Dragons"."Table Repas"
  191.     );
  192.  
  193. /* 24: Dragonnes dont tous les pretendants font la greve de la faim */
  194. SELECT "DragonAime"
  195. FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
  196. WHERE "Dragons"."Table Amours"."DragonAime" = "Dragons"."Table Dragon"."Dragon"
  197. GROUP BY "DragonAime"
  198. HAVING COUNT("Dragons"."Table Amours"."DragonAime") = (
  199.     SELECT COUNT(DISTINCT "Dragon")
  200.     FROM "Dragons"."Table Repas"
  201.     );
  202.  
  203. /* 25: Les couples dont le nombre d'ecailles est paire et dont le comportement amoureux est le meme */
  204. SELECT A1."DragonAimant", A1."DragonAime"
  205. FROM "Dragons"."Table Amours" A1
  206. WHERE A1."DragonAimant" = 'Miloch';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement