Toutes les requêtes sur le projet Disques2009

La « pensée » du lendi 20 novemb' 2017 , 23h56m55s :
Sauvez une baleine, bouffez un japonais.
  1. Nombre de disques pour chaque état. [voir] (4 lignes.)
    SELECT  eta_nom,COUNT(*)
    FROM  disque,etat
    WHERE  dis_etat=eta_num
    GROUP BY  eta_nom ;
  2. Nombre de chansons par genre musical. [voir] (10 lignes.)
    SELECT  gen_nom,COUNT(*)
    FROM  chanson,genre
    WHERE  gen_num=cha_genre
    GROUP BY  gen_nom,gen_num ;
  3. Nombre de chansons de chaque langue. [voir] (9 lignes.)
    SELECT  lan_nom,COUNT(*)
    FROM  chanson,languechanson,langue
    WHERE  cha_num=lac_chanson
    AND  lan_num=lac_langue
    GROUP BY  lan_nom ;
  4. Nombre de chansons dont les paroles sont libres de droits. [voir] (1 ligne.)
    SELECT  COUNT(*)
    FROM  chanson
    WHERE  cha_libre ;
  5. Les appartenances de musiciens à des groupes, par ordre alphabétique des groupes, des membres et par ordre chronologique. [voir] (44 lignes.)
    SELECT  TRIM(m.art_prenom||' '||m.art_nom||' '||m.art_groupe) AS artiste,
     TRIM(g.art_prenom||' '||g.art_nom||' '||g.art_groupe) AS groupe,
     CASE WHEN mem_debut<>'' THEN mem_debut ELSE '' END AS depuis,
     CASE WHEN mem_fin<>'' THEN mem_fin ELSE '' END AS jusque
    FROM  artiste m,membre,artiste g
    WHERE  m.art_num=mem_membre
    AND  mem_groupe=g.art_num
    ORDER BY  g.art_nom,g.art_prenom,g.art_groupe,
     m.art_nom,m.art_prenom,m.art_groupe,
     mem_debut,mem_fin ;
  6. Liste des utilisateurs, dans l'ordre alphabétique des noms, prénoms, ainsi que leurs logins et niveaux d'autorisation. [voir] (94 lignes.)
    SELECT  aut_nom, aut_prenom, aut_login, dro_nom
    FROM  autorisations, droits
    WHERE  aut_droits = dro_num
    ORDER BY  1,2 ;
  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') AS "Aujourd'hui",
     TO_CHAR(CURRENT_DATE,'DD/MM/YYYY') AS "Aujourd'hui" ;
  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') AS "Hier",
     TO_CHAR(CURRENT_DATE - 1,'DD/MM/YYYY') AS "Hier" ;
  9. Afficher la date de dimanche dernier. [voir] (1 ligne.)
    SELECT  CURRENT_DATE - TO_CHAR(CURRENT_DATE,'D')::INTEGER + 1
      AS "Dimanche dernier" ;
  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') AS "Au troisième top..." ;
  12. Nombre de chansons interprétées par Robert Cray. [voir] (1 ligne.)
    SELECT   COUNT(*) AS nbre
    FROM   artiste,interprete
    WHERE   art_num=int_artiste
    AND   art_prenom='Robert'
    AND   art_nom='Cray'
    AND   art_groupe='' ;
  13. Nombre d'utilisateurs pour chaque niveau d'autorisation. [voir] (3 lignes.)
    SELECT  dro_nom AS Nom,dro_niveau AS niveau,COUNT(*) AS nbre
    FROM  autorisations,droits
    WHERE  aut_droits=dro_num
    GROUP BY  dro_nom,dro_niveau ;
  14. La liste des disques de Pink Floyd, dans l'ordre chronologique inverse (les plus récents en premier). [voir] (10 lignes.)
    SELECT  dis_titre,dis_annee
    FROM  disque,artiste
    WHERE  dis_artiste=art_num
    AND  art_nom='Pink Floyd'
    ORDER BY  2 DESC,1 ;
  15. Les 10 artistes qui ont le plus de disques. [voir] (10 lignes.)
    SELECT  TRIM(art_prenom||' '||art_nom||' '||art_groupe) AS artiste,COUNT(*)
    FROM  disque,artiste
    WHERE  dis_artiste=art_num
    GROUP BY  art_num,art_prenom,art_nom,art_groupe
    ORDER BY  COUNT(*) DESC
    LIMIT  10 ;
  16. Titre des chansons qui contiennent le mot « silver » dans le texte ou dans le titre. [voir] (33 lignes.)
    SELECT  cha_titre
    FROM  chanson
    WHERE  LOWER(cha_titre) LIKE '%silver%'
    OR  LOWER(cha_texte) LIKE '%silver%'
    ORDER BY  cha_titre ;
  17. Nombre de chansons qui contiennent le mot « love » dans le titre, et nombre de chansons qui contiennent le mot « hate » dans le titre. [voir]
     SELECT  'Love'||'' AS "Love hate",  (SELECT  COUNT(*)
         FROM  chanson
         WHERE  LOWER(cha_titre)
           LIKE '%love%') AS nombre
    UNION  
     SELECT  'Hate'||'' AS "Love hate",  (SELECT  COUNT(*)
         FROM  chanson
         WHERE  LOWER(cha_titre)
           LIKE '%hate%') AS nombre ;
  18. Titre de la chanson qui a été modifiée en dernier, date de cette modification, nombre de jours depuis cette modification. [voir] (1 ligne.)
    SELECT  cha_titre AS titre,TO_CHAR(cha_modif,'DD/MM/YYYY') AS date,
     (CURRENT_DATE-cha_modif::date)||' jours' AS Delai
    FROM  chanson
    WHERE  cha_modif=(SELECT MAX(cha_modif) FROM chanson) ;
  19. Les 5 jours où il y a eu le plus de modifications de chansons, et combien. [voir] (5 lignes.)
    SELECT  TO_CHAR(cha_modif,'DD/MM/YYYY') AS jour,COUNT(*) AS nombre
    FROM  chanson
    GROUP BY  TO_CHAR(cha_modif,'DD/MM/YYYY')
    ORDER BY  COUNT(*) DESC
    LIMIT  5 ;
  20. Statistiques horaires des modification de chansons. [voir] (24 lignes.)
    SELECT  TO_CHAR(cha_modif,'HH24') AS heure,COUNT(*) AS nombre
    FROM  chanson
    GROUP BY  TO_CHAR(cha_modif,'HH24')
    ORDER BY  1 ;
  21. Nombre de chansons écrites par chaque artiste. [voir] (13 lignes.)
    SELECT  TRIM(art_prenom||' '||art_nom||' '||art_groupe) AS artiste,COUNT(*) AS nombre
    FROM  artiste,ecrit
    WHERE  art_num=ecr_artiste
    GROUP BY  art_num,art_prenom,art_nom,art_groupe
    ORDER BY  art_nom,art_prenom,art_groupe ;
  22. Nombre de chansons de chaque langue. [voir] (9 lignes.)
    SELECT  lan_nom,COUNT(*)
    FROM  langue,languechanson
    WHERE  lan_num=lac_langue
    GROUP BY  lan_nom
    ORDER BY  1,2 ;
  23. Les disques (titre et artiste) qui comportent moins de 5 chansons. [voir] (19 lignes.)
    SELECT  dis_titre AS disque,
     TRIM(art_prenom||' '||UPPER(art_nom)||' '||art_groupe) AS artiste,
     COUNT(*) AS Nbre
    FROM  disque,interprete,artiste
    WHERE  dis_num=int_disque
    AND  art_num=dis_artiste
    GROUP BY  dis_num,dis_titre,art_prenom,art_nom,art_groupe
    HAVING  COUNT(DISTINCT int_numero)<5 ;
  24. Afficher le titre des chansons dont la dernière modification a été faite au mois de mai. [voir] (1149 lignes.)
    SELECT  cha_titre
    FROM  chanson
    WHERE  TO_CHAR(cha_modif,'MM')::INTEGER=5 ;
  25. Les chansons dont il existe au moins 5 versions. [voir] (22 lignes.)
    SELECT  cha_num,cha_titre,COUNT(DISTINCT int_disque||'-'||int_numero)
    FROM  chanson,interprete
    WHERE  cha_num=int_chanson
    GROUP BY  cha_num,cha_titre
    HAVING  COUNT(DISTINCT int_disque||'-'||int_numero)>=5
    ORDER BY  COUNT(DISTINCT int_disque||'-'||int_numero) DESC ;
  26. Le contenu du disque "Déjà Vu". [voir] (10 lignes.)
    SELECT  int_numero,cha_titre
    FROM  chanson,interprete,disque
    WHERE  cha_num=int_chanson
    AND  int_disque=dis_num
    AND  LOWER(dis_titre)='déjà vu'
    ORDER BY  int_numero ;
  27. La discographie complète de Lou Reed, que ce soit seul ou dans un groupe (on précisera). [voir]
    (  
     SELECT  dis_titre AS "Discographie",dis_annee AS "Année",
       'Seul'||''AS "Conditions"
     FROM  artiste,disque
     WHERE  art_num=dis_artiste
     AND  art_nom='Reed'
     AND  art_prenom='Lou'
     AND  art_groupe=''
    )  
    UNION  
    (  
     SELECT  dis_titre AS "Discographie",dis_annee AS "Année",
       'avec '||TRIM(g.art_prenom||' '||UPPER(g.art_nom)||' '||g.art_groupe)
      AS "Conditions"
     FROM  artiste a,artiste g,membre,disque
     WHERE  g.art_num=dis_artiste
     AND  a.art_nom='Reed'
     AND  a.art_prenom='Lou'
     AND  a.art_groupe=''
     AND  g.art_num=mem_groupe
     AND  a.art_num=mem_membre
    )  
    ORDER BY  2 ;
  28. En ordre alphabétique, les musiciens qui font partie d'un groupe qui a chanté des chansons de rock. [voir] (20 lignes.)
    SELECT DISTINCT  art_prenom,art_nom,art_groupe
    FROM  artiste,membre,interprete,chanson,genre
    WHERE  art_num=mem_membre
    AND  mem_groupe=int_artiste
    AND  int_chanson=cha_num
    AND  cha_genre=gen_num
    AND  LOWER(gen_nom)='rock'
    ORDER BY  art_nom,art_prenom,art_groupe ;
  29. Les artistes qui ont chanté dans plusieurs langues, et dans combien de langues. [voir] (14 lignes.)
    SELECT  TRIM(art_prenom||' '||UPPER(art_nom)||' '||art_groupe) AS artiste,
     count(distinct lan_nom) AS "nbre de langues"
    FROM  artiste,interprete,languechanson,langue
    WHERE  art_num=int_artiste
    AND  int_chanson=lac_chanson
    AND  lac_langue=lan_num
    GROUP BY  art_prenom,art_nom,art_groupe
    HAVING  COUNT(DISTINCT lan_num)>1
    ORDER BY  1,2 ;
Dernière modification : 25/8/2016