Toutes les requêtes sur le projet Inscription

La « pensée » du lendi 20 novemb' 2017 , 23h39m22s :
Les avions sont des jouets sans aucune valeur militaire.
  -- Maréchal Foch (1911)
  1. Les rues accompagnées de leurs villes en ordre alphabétique. [voir] (76 lignes.)
    SELECT  tvo_nom||' '||voi_nom AS rue, voi_cp||' '||vil_nom AS ville
    FROM  ville, voirie, typevoirie
    WHERE  vil_cp=voi_cp
    AND  voi_type=tvo_num
    ORDER  BY vil_nom ;
  2. Liste des étudiants, dans l'ordre alphabétique des noms, prénoms, ainsi que leur adresse (numéro, rue, code postal, ville). [voir] (411 lignes.)
    SELECT  etu_nom,etu_prenom,etu_adressenum,tvo_nom,voi_nom,voi_cp,vil_nom
    FROM  etudiant, voirie, ville, typevoirie
    WHERE  etu_voirie=voi_num
    AND  voi_type=tvo_num
    AND  voi_cp=vil_cp
    ORDER BY  1,2 ;
  3. Les noms et prénoms des étudiants qui habitent à Lille. [voir] (21 lignes.)
    SELECT  etu_nom,etu_prenom
    FROM  etudiant, voirie, ville
    WHERE  etu_voirie=voi_num
    AND  voi_cp=vil_cp
    AND  LOWER(vil_nom)='lille'
    ORDER BY  etu_nom,etu_prenom ;
  4. Liste des séances, en ordre chronologique, avec la salle et l'identité du moniteur. [voir] (37 lignes.)
    SELECT  sea_jour||'/'||sea_mois||'/'||sea_annee AS date,
     sea_debut_h||'h'||sea_debut_m AS horaire,
     sal_nom AS salle, UPPER(mon_nom)||' '||mon_prenom AS moniteur
    FROM  seance,salle,moniteur
    WHERE  sal_num=sea_salle
    AND  mon_num=sea_moniteur
    ORDER BY  sea_annee,sea_mois,sea_jour,sea_debut_h,sea_debut_m ;
  5. Liste alphabétique des étudiants (nom, prenom, numéro) qui sont dans la même séance que « Karl AGE ». [voir] (12 lignes.)
    SELECT  e.etu_nom,e.etu_prenom,e.etu_carte
    FROM  etudiant e,etudiant a,inscription ie,inscription ia
    WHERE  a.etu_nom='Age'
    AND  a.etu_prenom='Karl'
    AND  a.etu_carte=ia.ins_etudiant
    AND  e.etu_carte=ie.ins_etudiant
    AND  ie.ins_seance=ia.ins_seance
    ORDER BY  1,2,3 ;
  6. Les noms et prénoms des étudiants qui n'ont pas fait de réservation. [voir] (262 lignes.)
    SELECT  etu_carte,etu_nom,etu_prenom
    FROM  etudiant
    WHERE  etu_carte
     NOT IN (SELECT ins_etudiant FROM inscription)
    ORDER BY  etu_nom,etu_prenom ;
  7. Afficher la date d'aujourd'hui sous la forme JJ/MM/AAAA (de deux façons, en utilisant NOW() et CURRENT_DATE). [voir] (1 ligne.)
    SELECT TO_CHAR(NOW(),'DD/MM/YYYY'), TO_CHAR(CURRENT_DATE,'DD/MM/YYYY') ;
  8. Afficher la date d'hier (de deux façons, en utilisant NOW() et CURRENT_DATE). [voir] (1 ligne.)
    SELECT TO_CHAR(NOW()::DATE - 1,'DD/MM/YYYY'), TO_CHAR(CURRENT_DATE - 1,'DD/MM/YYYY') ;
  9. Afficher la date de dimanche dernier. [voir] (1 ligne.)
    SELECT CURRENT_DATE - TO_CHAR(CURRENT_DATE,'D')::INTEGER + 1 ;
  10. Afficher en français le jour d'aujourd'hui (lundi, mardi, etc.). [voir] (1 ligne.)
    SELECT  CASE
       WHEN TO_CHAR(CURRENT_DATE,'D')='1' THEN 'dimanche'
       WHEN TO_CHAR(CURRENT_DATE,'D')='2' THEN 'lundi'
       WHEN TO_CHAR(CURRENT_DATE,'D')='3' THEN 'mardi'
       WHEN TO_CHAR(CURRENT_DATE,'D')='4' THEN 'mercredi'
       WHEN TO_CHAR(CURRENT_DATE,'D')='5' THEN 'jeudi'
       WHEN TO_CHAR(CURRENT_DATE,'D')='6' THEN 'vendredi'
       ELSE 'samedi'
     END  AS "jour d'aujourd'hui" ;
  11. Afficher l'heure actuelle à la seconde près. [voir] (1 ligne.)
    SELECT TO_CHAR(NOW(),'HH24:MI:SS') ;
  12. Afficher le nom des salles qui ont été occupées le matin ce mois-ci. [voir] (0 ligne.)
    SELECT  DISTINCT sal_nom
    FROM  salle,seance
    WHERE  sal_num=sea_salle
    AND  sea_mois=TO_CHAR(NOW(),'MM')::INTEGER
    AND  sea_debut_h<12 ;
  13. Identités de tous les moniteurs qui auront eu à s'occuper d'un étudiant de Lille. [voir] (2 lignes.)
    SELECT  DISTINCT mon_nom,mon_prenom
    FROM  moniteur,seance,inscription,etudiant,voirie,ville
    WHERE  mon_num=sea_moniteur
    AND  sea_num=ins_seance
    AND  ins_etudiant=etu_carte
    AND  etu_voirie=voi_num
    AND  voi_cp=vil_cp
    AND  vil_nom='Lille' ;
  14. Nombre d'étudiants par UFR dans la liste. [voir] (18 lignes.)
    SELECT  ufr_nom AS ufr, COUNT(*) AS nbre
    FROM  etudiant, ufr
    WHERE  etu_ufr=ufr_num
    GROUP BY  ufr_nom ;
  15. Nombre d'étudiants inscrits dans une séance par UFR. [voir] (18 lignes.)
    SELECT  ufr_nom AS ufr, COUNT(*) AS nbre
    FROM  etudiant, ufr, inscription
    WHERE  etu_ufr=ufr_num
    AND  etu_carte=ins_etudiant
    GROUP BY  ufr_nom ;
  16. Nombre de salles et nombre de places disponibles. [voir] (1 ligne.)
    SELECT  COUNT(*) AS "nombre de salles",SUM(sal_taille) AS "nombre de places"
    FROM  salle ;
  17. Le nombre d'étudiants par ville. [voir] (33 lignes.)
    SELECT  vil_nom,count(*)
    FROM  etudiant, voirie, ville
    WHERE  vil_cp=voi_cp
    AND  voi_num=etu_voirie
    GROUP BY  vil_nom
    ORDER BY  vil_nom ;
  18. Les noms et prénoms des 3 moniteurs qui auront eu à s'occuper du plus grand nombre de séances. [voir] (3 lignes.)
    SELECT  mon_nom,mon_prenom,COUNT(*)
    FROM  moniteur, seance
    WHERE  mon_num=sea_moniteur
    GROUP BY  mon_num,mon_nom,mon_prenom
    ORDER BY  COUNT(*) DESC
    LIMIT  3 ;
  19. Les noms des 5 salles les plus utilisées. [voir] (5 lignes.)
    SELECT  sal_nom,COUNT(*)
    FROM  salle, seance
    WHERE  sal_num=sea_salle
    GROUP BY  sal_nom
    ORDER BY  COUNT(*),sal_nom DESC
    LIMIT  5 ;
  20. Les 3 noms les plus courants parmi les étudiants. [voir] (3 lignes.)
    SELECT  etu_nom,COUNT(*)
    FROM  etudiant
    GROUP BY  etu_nom
    ORDER BY  COUNT(*) DESC,etu_nom
    LIMIT  3 ;
  21. Les étudiants ayant fait plusieurs réservations. [voir] (7 lignes.)
    SELECT  etu_nom,etu_prenom,etu_carte,COUNT(*)
    FROM  etudiant, inscription
    WHERE  etu_carte=ins_etudiant
    GROUP BY  etu_nom,etu_prenom,etu_carte
    HAVING  COUNT(*)>1
    ORDER BY  etu_nom,etu_prenom,etu_carte ;
  22. Les couples (nom,prénom) qui désignent des homonymes, dans l'ordre alphabétique, et combien d'homonymes désignent-ils. [voir] (3 lignes.)
    SELECT  etu_nom,etu_prenom,COUNT(*)
    FROM  etudiant
    GROUP BY  etu_nom,etu_prenom
    HAVING  COUNT(*)>1
    ORDER BY  etu_nom,etu_prenom ;
  23. Afficher les horaires (heure, date, salle) des 5 séances les plus remplies. [voir] (5 lignes.)
    SELECT  sea_jour||'/'||sea_mois||'/'||sea_annee AS date,
     sea_debut_h||'h'||sea_debut_m AS horaire,
     sal_nom AS salle,
     COUNT(*) AS nombre
    FROM  seance,salle,inscription
    WHERE  sal_num=sea_salle
    AND  ins_seance=sea_num
    GROUP BY  sea_jour||'/'||sea_mois||'/'||sea_annee,
     sea_debut_h||'h'||sea_debut_m,
     sal_nom
    ORDER BY  COUNT(*) DESC
    LIMIT  5 ;
  24. Moyenne du nombre de personnes par rue pour chaque chaque ville. [voir] (33 lignes.)
    SELECT  vil_nom,AVG(nbre)
    FROM  (
       SELECT  vil_nom,voi_num,COUNT(*) AS nbre
       FROM  ville,voirie,etudiant
       WHERE  etu_voirie=voi_num
       AND  vil_cp=voi_cp
       GROUP BY  vil_nom,voi_num
     ) XX
    GROUP BY  vil_nom
    ORDER BY  AVG(nbre) DESC,vil_nom ;
  25. La ville la plus représentée parmi les étudiants (sans utiliser LIMIT). [voir] (1 ligne.)
    SELECT  vil_nom
    FROM  ville,voirie,etudiant
    WHERE  etu_voirie=voi_num
    AND  vil_cp=voi_cp
    GROUP  BY vil_nom
    HAVING  COUNT(*) = (SELECT MAX(n) FROM  (SELECT  COUNT(*) AS n
       FROM  ville,voirie,etudiant
       WHERE  etu_voirie=voi_num
       AND  vil_cp=voi_cp
       GROUP BY  vil_nom) XX
       ) ;
  26. Moyenne du nombre d'étudiants par séance. [voir] (1 ligne.)
    SELECT  AVG(nbre)
    FROM  (
     SELECT  COUNT(*) AS nbre
     FROM  inscription
     GROUP BY  ins_seance) x ;
  27. Nombre d'étudiants en doctorat dans chaque séance. Les séances où aucun étudiant de doctorat n'est présent devront apparaître aussi. [voir] ( ligne.)
    (  
     SELECT  (sea_mois
       ||'/'||sea_jour
       ||'/'||sea_annee
       ||' '||sea_debut_h
       ||':'||sea_debut_m
       )::TIMESTAMP AS horaire,
       sal_nom AS salle,
       COUNT(*) AS nombre
     FROM  salle,
       seance,
       inscription,
       etudiant,
       niveau
     WHERE  sea_num=ins_seance
     AND  sea_salle=sal_num
     AND  ins_etudiant=etu_carte
     AND  etu_niveau=niv_num
     AND  niv_nom='Doctorat'
     GROUP BY  sea_num,
       sea_jour,
       sea_mois,
       sea_annee,
       sea_debut_h,
       sea_debut_m,
       sal_nom
    )  
    UNION  
    (  
     SELECT  (sea_mois
       ||'/'||sea_jour
       ||'/'||sea_annee
       ||' '||sea_debut_h
       ||':'||sea_debut_m
       )::TIMESTAMP AS horaire,
       sal_nom AS salle,
       0 AS nombre
     FROM  salle,
       seance
     WHERE  sea_salle=sal_num
     AND  sea_num NOT IN  (
         SELECT  ins_seance
         FROM  inscription,etudiant,niveau
         WHERE  ins_etudiant=etu_carte
         AND  etu_niveau=niv_num
         AND  niv_nom='Doctorat'
         )
    )  
    ORDER BY  1 ;
Dernière modification : 25/8/2016