IsakViste icon

L1: TPDragons

IsakViste | PRO | 05/17/17 12:15:04 PM UTC | 0 ⭐ | 7039 👁️ | Never ⏰ | []
PostgreSQL |

6.22 KB

|

None

|

0 👍

/

0 👎

/* INSTRUCTIONS
psql -h dbserver
\H
\o output.html
\i TPscript.sql
*/
 
/* 1: Dragons qui crachent du feu */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
WHERE "CracheFeu" = true;
 
/* 2: Dragons males qui crachent du feu */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
WHERE "CracheFeu" = true
AND "Sexe" = 'M';
 
/* 3: Liste des dragons femelles dans l'ordre decroissant de leur longueur */
SELECT *
FROM "Dragons"."Table Dragon"
WHERE "Sexe" = 'F'
ORDER BY "Longueur" DESC;
 
/* 4: Rapport Moyen Longueur-Ecailles male puis femelle */
SELECT "Dragon","Ecailles"/"Longueur"
FROM "Dragons"."Table Dragon"
WHERE "Sexe" = 'M';
 
SELECT "Dragon","Ecailles"/"Longueur"
FROM "Dragons"."Table Dragon"
WHERE "Sexe" = 'F';
 
/* 5: Dragons amoureux */
SELECT "DragonAimant"
FROM "Dragons"."Table Amours";
 
/* 6: Dragons qui ne sont pas amoureux */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
WHERE "Dragon"
NOT IN  (
    SELECT "DragonAimant" FROM "Dragons"."Table Amours"
    );
 
/* 7: Qui aime qui passionnement */
SELECT *
FROM "Dragons"."Table Amours"
WHERE "Force" = 'passionnement';
 
/* 8: Qui aime qui au moins passionnement */
SELECT *
FROM "Dragons"."Table Amours"
WHERE "Force" = 'passionnement'
OR "Force" = 'a la folie';
 
/* 9: Liste des couples qui s'aiment mutuellement */
SELECT "DragonAimant","DragonAime"
FROM "Dragons"."Table Amours"
WHERE "DragonAimant" 
IN  (
    SELECT "DragonAime" FROM "Dragons"."Table Amours"
    )
AND "DragonAime"
IN  (
    SELECT "DragonAimant" FROM "Dragons"."Table Amours"
    );
 
/* 10: Q9 mais en supprimant les faux doublons */
SELECT "DragonAime"
FROM "Dragons"."Table Amours"
WHERE "DragonAimant" 
IN  (
    SELECT "DragonAime" FROM "Dragons"."Table Amours"
    )
AND "DragonAime"
IN  (
    SELECT "DragonAimant" FROM "Dragons"."Table Amours"
    );
 
/* 11: Noms des Dragonnes aimees par tous les dragons machos */
SELECT "DragonAime"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
WHERE "Dragon" = "DragonAimant"
AND "Sexe" = 'M'
AND "EnAmour" = 'macho'
 
INTERSECT SELECT "DragonAimant"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
WHERE "Dragon" = "DragonAime";
 
/* 12: Noms des Dragonnes aimees que par des dragons timides  */
SELECT "DragonAime"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
WHERE "Dragon" = "DragonAimant"
AND "Sexe" = 'M'
AND "EnAmour" = 'timide'
 
INTERSECT SELECT "DragonAimant"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon"
WHERE "Dragon" = "DragonAime";
 
/* 13: Produits hypo-calories (< 10 calories) */
SELECT *
FROM "Dragons"."Table nourriture"
WHERE "Calories" < 10;
 
/* 14: Dragons qui mange des oeufs */
SELECT "Dragon"
FROM "Dragons"."Table Repas"
WHERE "Produit" = 'oeuf';
 
/* 15: Dragonnes qui mangent des oeufs */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
WHERE "Sexe" = 'F'
 
INTERSECT SELECT "Dragon"
FROM "Dragons"."Table Repas"
WHERE "Produit" = 'oeuf';
 
/* 16: Dragons qui mangent pas */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
 
EXCEPT SELECT DISTINCT "Dragon"
FROM "Dragons"."Table Repas";
 
/* 17: Produits non hypo-calories consommer par dragons males crachant du feu */
SELECT DISTINCT "Dragons"."Table nourriture"."Produit"
FROM "Dragons"."Table nourriture","Dragons"."Table Repas","Dragons"."Table Dragon"
WHERE "Dragons"."Table nourriture"."Calories" >= 10
AND "Dragons"."Table nourriture"."Produit" = "Dragons"."Table Repas"."Produit"
AND "Dragons"."Table Repas"."Dragon" = "Dragons"."Table Dragon"."Dragon"
AND "Dragons"."Table Dragon"."Sexe" = 'M'
AND "Dragons"."Table Dragon"."CracheFeu" = true;
 
/* 18: Noms des Dragons qui mangent de tout */
SELECT "Dragon"
FROM "Dragons"."Table Repas", "Dragons"."Table nourriture"
WHERE "Dragons"."Table Repas"."Produit" = "Dragons"."Table nourriture"."Produit"
GROUP BY "Dragon"
HAVING COUNT("Dragons"."Table Repas"."Produit") = (
    SELECT COUNT(DISTINCT "Produit")
    FROM "Dragons"."Table nourriture"
    );
 
/* 19: Nombre de Calories par chaque dragon lors d'un repas, classer dans l'ordre croissant du total des calories */
SELECT "Dragon", SUM("Quantite" * "Calories")
FROM "Dragons"."Table Repas", "Dragons"."Table nourriture"
WHERE "Dragons"."Table Repas"."Produit" = "Dragons"."Table nourriture"."Produit"
GROUP BY "Dragon"
ORDER BY (SUM("Quantite" * "Calories")) DESC;
 
/* 20: --- */
SELECT "Dragons"."Table Dragon"."Dragon", SUM(1 * "Calories" * "Quantite" / "Longueur")
FROM "Dragons"."Table Repas", "Dragons"."Table Dragon", "Dragons"."Table nourriture"
WHERE "Dragons"."Table Dragon"."Dragon" = "Dragons"."Table Repas"."Dragon"
AND "Dragons"."Table nourriture"."Produit" = "Dragons"."Table Repas"."Produit"
AND "CracheFeu" = true
GROUP BY "Dragons"."Table Dragon"."Dragon"
ORDER BY (SUM(1 * "Calories" * "Quantite" / "Longueur")) DESC;
 
/* 21: Dragons qui mangent pas et qui aiment personne */
SELECT "Dragon"
FROM "Dragons"."Table Dragon"
 
EXCEPT SELECT DISTINCT "Dragon"
FROM "Dragons"."Table Repas"
 
EXCEPT SELECT DISTINCT "DragonAimant"
FROM "Dragons"."Table Amours";
 
/* 22: Produits consommes par les dragons aimant a la folie */
SELECT DISTINCT "Produit"
FROM "Dragons"."Table Repas", "Dragons"."Table Amours"
WHERE "Dragons"."Table Amours"."DragonAimant" = "Dragons"."Table Repas"."Dragon"
AND "Force" = 'a la folie';
 
/* 23: Dragonnes dont au moins un pretendant fais la greve de la faim */
SELECT DISTINCT "DragonAime"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon" 
WHERE "Dragons"."Table Amours"."DragonAime" = "Dragons"."Table Dragon"."Dragon"
AND "Sexe" = 'F'
AND "DragonAimant" IN (
    SELECT "Dragon"
    FROM "Dragons"."Table Dragon"
 
    EXCEPT SELECT DISTINCT "Dragon"
    FROM "Dragons"."Table Repas"
    );
 
/* 24: Dragonnes dont tous les pretendants font la greve de la faim */
SELECT "DragonAime"
FROM "Dragons"."Table Amours", "Dragons"."Table Dragon" 
WHERE "Dragons"."Table Amours"."DragonAime" = "Dragons"."Table Dragon"."Dragon"
GROUP BY "DragonAime"
HAVING COUNT("Dragons"."Table Amours"."DragonAime") = (
    SELECT COUNT(DISTINCT "Dragon")
    FROM "Dragons"."Table Repas"
    );
 
/* 25: Les couples dont le nombre d'ecailles est paire et dont le comportement amoureux est le meme */
SELECT A1."DragonAimant", A1."DragonAime"
FROM "Dragons"."Table Amours" A1
WHERE A1."DragonAimant" = 'Miloch';

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎