T-GSI Ch.1 Ch.3 Le Langage SQL, support de cours CORRIGÉ Support de cours : a) Quelles sont les différentes catégories de film (code et libellé)? SELECT codecat, libcat SELECT * SELECT categorie.* SELECT c.* FROM categorie c; b) Quelles sont les noms des salles du cinéma, triés par ordre alphabétique? ORDER BY salle; ORDER BY 1; c) Quels sont films (numéro, titre, durée) projetés au cinéma? SELECT DISTINCT film.numfilm, titre, duree, projection ; SELECT DISTINCT f.numfilm, titre, duree f, projection p WHERE f.numfilm=p.numfilm; d) Quels sont les salles qui ont des séances à 11h00? WHERE seance='11h00'; e) Quelle est le titre et la durée du film numéro 20?, duree WHERE numfilm='20'; Ch.1 - Application (corrigé).doc page 1 / 5 om (2001-2005)
f) Quelle est le titre et la durée (en heure) du film numéro 20?, (duree/60) WHERE numfilm='20'; g) Quels sont les noms des films diffusés en salle nord qui durent entre 60 et 120 minutes?, projection AND salle='nord' AND duree BETWEEN '60' AND '120'; h) Combien il y a-t-il de films dans la base (dans une colonne nommée : Total films)? SELECT COUNT(*) AS 'Total films' ; i) Combien il y a-t-il de films par producteur (producteur, nombre de films)? SELECT production, COUNT(numfilm) AS 'Nbre films' GROUP by production; SELECT production, COUNT(numfilm) AS 'Nbre films' GROUP by 1; j) Combien il y a-t-il de films par catégorie (libellé catégorie, nombre de films)? SELECT libcat, COUNT(numfilm) AS 'Nbre films' f, categorie c WHERE f.codecat=c.codecat GROUP BY libcat; k) Combien il y a-t-il de films par séance dès lors qu il y en a plus d un pour le 18/11? SELECT seance, COUNT(numfilm) AS 'Nbre films' WHERE DATE='2005/11/18' GROUP BY seance HAVING COUNT(numfilm)>1; SELECT seance, COUNT(numfilm) AS 'Nbre films' WHERE date='2005/11/18' GROUP BY seance HAVING COUNT(*)>1; Ch.1 - Application (corrigé).doc page 2 / 5 om (2001-2005)
l) Combien de fois les films (numfilm, titre) sont-ils projetés SELECT film.numfilm, titre, COUNT(seance), projection GROUP BY film.numfilm,titre; SELECT film.numfilm, titre, COUNT(seance), projection GROUP BY film.numfilm; m) Combien il y a-t-il de films par jour et par salle dès lors qu il y en a plus d un? SELECT date, salle, COUNT(numfilm) AS 'Nbre films' GROUP BY date, salle HAVING COUNT(numfilm)>2; n) Quels sont les titres des films de 140 minutes et produits par UGC? WHERE duree = '140' AND production = 'UGC'; WHERE (duree,production)=('140','ugc'); o) Quels sont les titres des films commençant par C et L (triés par ordre alphabétique)? WHERE titre LIKE 'C%' OR titre LIKE 'L%' ORDER BY titre; p) Quels sont les titres des films qui ne commencent pas par la lettre U (triés alphabétiquement)? WHERE titre NOT LIKE 'U%' ORDER BY titre; q) Quels sont les titres et la durée des films qui ne sont pas diffusés en salle nord? SELECT DISTINCT titre, duree, projection AND salle!= 'Nord'; Ch.1 - Application (corrigé).doc page 3 / 5 om (2001-2005)
r) Quels sont les titres des films diffusés à 11h dans les salles Nord ou Centrale? SELECT DISTINCT titre, projection AND seance LIKE '11h%' AND salle IN ('Nord','Centrale'); s) Quelle est la durée moyenne des films de la base? SELECT AVG(duree) ; t) Quel est la séance du film le plus tôt dans la journée du 18/11? SELECT MIN(seance) WHERE date='2005/11/18'; u) Quel est le numéro et le titre des films qui ont la même durée que le film numéro 71? WHERE duree = (SELECT duree WHERE numfilm='71'); v) Quel est le numéro et le titre des films de la même catégorie que Super Mondet XII? WHERE codecat = (SELECT codecat WHERE titre = 'Super Mondet XII'); w) Quels sont les titres des films diffusés aux horaires suivants : 11h00, 13h10 et 14h50? f, projection p WHERE f.numfilm=p.numfilm AND seance IN ('11h00','13h10','14h50'); x) Quels sont les films (numéro et titre) plus longs que la moyenne? WHERE duree > (SELECT AVG(duree) ); y) Quels films (numéro, salle et séance) sont programmés aux mêmes horaires? SELECT DISTINCT p1.numfilm, p1.salle, p1.seance p1, projection p2 WHERE p1.seance=p2.seance AND p1.numfilm!=p2.numfilm; Ch.1 - Application (corrigé).doc page 4 / 5 om (2001-2005)
z) Quelle est le titre, la salle, la séance et la durée (en heure) des films projeté. En utilisant la fonction ROUND(<champ ou formule>,<nb décimales>)?, salle, seance, ROUND(duree/60,1) AS 'duree' f, projection p WHERE f.numfilm=p.numfilm; aa) Quels sont les films (numéro et titre) qui n ont pas été diffusés? INTERSECT, projection ; WHERE numfilm NOT IN (SELECT film.numfilm, projection ); bb) Quels sont les trois films qui sont les plus diffusés? SELECT numfilm GROUP BY numfilm HAVING COUNT(seance)>0 LIMIT 3; cc) Quel est le film le plus diffusé? SELECT numfilm GROUP BY numfilm HAVING COUNT(seance) >= ALL (SELECT COUNT(seance) GROUP BY numfilm); Ch.1 - Application (corrigé).doc page 5 / 5 om (2001-2005)