# affiche la liste des exemplaires les plus emprunté dans l'ordre décroissant
defressourcesPopulaires(self,conn):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT r.titre, COUNT(p.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref GROUP BY r.titre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC"
cursor.execute(sql1)
rows=cursor.fetchall()
returnrows
exceptExceptionaserr:
print(err)
finally:
conn.close()
# print('Titre : {0} Nombre d\'emprunts : {1}\n'.format(row[0], row[1]))
# affiche le nombre de fois qu'une ressource en particulier a été empruntée
defnombreEmpruntRessource(self,codeUnique:int):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref WHERE r.codeUnique = '{0}' HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(codeUnique)
cursor.execute(sql1)
ressource=cursor.fetchone()
returnressource[0]
exceptExceptionaserr:
print(err)
finally:
conn.close()
#print("Titre : {0} Nombre d\'emprunts : {1}".format(ressource[0], ressource[1]))
# nombre de ressources empruntés par genre
defgenresPopulaires(self):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT r.genre, COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire ep ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC"
cursor.execute(sql1)
rows=cursor.fetchall()
returnrows
exceptExceptionaserr:
print(err)
finally:
conn.close()
# print('Genre : {0} Nombre d\'emprunts : {1}\n'.format(row[0], row[1]))
# retourne le nombre de fois qu'une ressource a été empruntée
defnombreEmpruntRessource(self,genre:int):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT COUNT(ep.ref) nb_emprunt FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref WHERE r.genre = '{0}' GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(genre)
cursor.execute(sql1)
ressource=cursor.fetchone()
returnressource[1]
exceptExceptionaserr:
print(err)
finally:
conn.close()
#print("Genre : {0} Nombre d\'emprunts : {1}".format(ressource[0], ressource[1]))
# retourne le genre de docuement le plus emprunté par un adhérent pour suggestion
defgenrePrefereAdherent(self,login:string):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT r.genre, nb_emprunt COUNT(ep.ref) FROM Ressource r JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.ref = e.ref JOIN Pret p ON p.pretID = ep.pretID WHERE p.adherent = '{0}' GROUP BY r.genre HAVING COUNT(ep.ref) > 1 ORDER BY COUNT(ep.ref) DESC".format(login)
cursor.execute(sql1)
genre=cursor.fetchall()
returngenre[0][0]# retourne le premier genre
exceptExceptionaserr:
print(err)
finally:
conn.close()
#print("Genre le plus emprunté : {0}".format(genre[1]))
#retourne l'age moyen des adhérents
defageMoyenAdherent(self):
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT AVG(DATE_PART('year', now()) - DATE_PART('year', a.dateNaissance)) FROM Adherent a"
cursor.execute(sql1)
age=cursor.fetchone()
returnage[0]
exceptExceptionaserr:
print(err)
finally:
conn.close()
#print("Genre le plus emprunté : {0}".format(genre[1]))
deftypeDocumentPopulaire(self):
# retourne le type de document le plus emprunté ( livre, oeuvre musicale ou film )
# on récupère le nombre de livre emprunté, le nb de oeuvre musicale empruntées et le nb de films empruntés.
conn=self.connect()
try:
cursor:psycopg2.extensions.cursor=conn.cursor()
sql1="SELECT COUNT(ep.ref) FROM Livre l JOIN Ressource r ON l.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"
cursor.execute(sql1)
nbLivres=cursor.fetchone()
sql2="SELECT COUNT(ep.ref) FROM OeuvreMusicale om JOIN Ressource r ON om.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"
cursor.execute(sql2)
nbOeuvres=cursor.fetchone()
sql3="SELECT COUNT(ep.ref) FROM Film f JOIN Ressource r ON f.codeUnique = r.codeUnique JOIN Exemplaire e ON e.ressource = r.codeUnique JOIN ExemplairePret ep ON ep.refExemplaire = e.ref"