1 TD 8 – Bases de données - corrigé Q3) SELECT DISTINCT annee
Transcription
1 TD 8 – Bases de données - corrigé Q3) SELECT DISTINCT annee
TD8–Basesdedonnées-corrigé Q3)SELECTDISTINCTanneeFROMNAISSANCE Q4)SELECTDISTINCTsexeFROMNAISSANCE Q5)SELECT*FROMNAISSANCEWHEREprenoms='Eric'ORDERBYannee Q6)SELECTnombreFROMNAISSANCEWHEREprenoms='Paul'ANDannee='2009' Q7)SELECT*FROMNAISSANCEWHEREannee='2004'ORDERBYprenoms Q8) SELECTDISTINCTprenomsFROMNAISSANCEWHEREsexe='X'ORDERBYprenoms SELECTDISTINCTprenomsFROMNAISSANCEWHEREsexe='X'ANDannee>2010ORDER BYprenoms Q9) SELECTCOUNT(prenoms)FROMNAISSANCEWHEREannee=2013 SELECTSUM(nombre)FROMNAISSANCEWHEREannee=2013 Q10) SELECTSUM(nombre)FROMNAISSANCEWHEREannee=2013ANDsexe='M' SELECTSUM(nombre)FROMNAISSANCEWHEREannee=2013ANDsexe='F' (lasommedesdeuxrésultatsfaitbienletotaldelaquestion10:onpeutvérifierégalementqu’il n’yavaitpasdeprénommixtenonrenseignécetteannée-là) Q11)SELECTannee,SUM(nombre)FROMNAISSANCEGROUPBYannee Q12)SELECTannee,SUM(nombre)FROMNAISSANCEWHEREsexe='F'ANDannee<2011 ANDannee>=2004GROUPBYannee Q13)SELECTannee,sexe,SUM(nombre)FROMNAISSANCEGROUPBYannee,sexe Q14) SELECT DISTINCT COUNT(prenoms) FROM NAISSANCE WHERE annee=2006 AND sexe=’M’. QuestionsupplémentairehorsTD SELECT prenoms, AVG(nombre) AS 'occurrence moyenne' FROM NAISSANCE GROUP BY prenoms Q15) Requêtesaveccréationd’unenouvellevue(tablenomméeNmax_par_annee): SELECTanneeASAN,MAX(nombre)ASNmaxFROMNAISSANCEGROUPBYannee SELECTprenomsFROMNAISSANCEWHEREannee=2005ANDnombre=(SELECTNmaxFROM Nmax_par_anneeWHEREAN=2005) Requêtesimbriquées: SELECT prenoms FROM NAISSANCE WHERE annee=2005 AND nombre=(SELECT MAX(nombre)FROMNAISSANCEWHEREannee=2005) Q16) SELECT prenoms FROM NAISSANCE WHERE annee=2007 AND sexe='M' AND nombre=(SELECTMAX(nombre)FROMNAISSANCEWHEREannee=2007ANDsexe='M') 1 Q17) SELECT prenoms FROM (SELECT prenoms, SUM(nombre) AS N FROM NAISSANCE GROUP BY prenoms) WHERE N=(SELECT MAX(total) FROM (SELECT SUM(nombre) AS total FROMNAISSANCEGROUPBYprenoms)) Q18) SELECT AVG(N) FROM (SELECT SUM(nombre) AS N FROM NAISSANCE GROUP BY annee) QuestionsupplémentairehorsTD SELECT * FROM (SELECT annee, SUM(nombre) AS N FROM NAISSANCE GROUP BY annee) WHERE N=(SELECT MIN(Ntot) FROM (SELECT annee, SUM(nombre) AS Ntot FROM NAISSANCEGROUPBYannee)) 2