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