Résumer les données
Vous êtes développeur pour la Bibliothèque publique métropolitaine. La ou le bibliothécaire en chef a demandé une nouvelle fonctionnalité pour le catalogue en ligne : afficher les statistiques de notation de chaque livre afin d’aider les usagers à faire des choix éclairés. Actuellement, le système stocke les avis individuels dans la table book_reviews ; cependant, il n’existe aucun moyen de voir le nombre total d’avis reçus par un livre ni sa note moyenne.
Votre tâche consiste à écrire une requête qui résume les avis en calculant, pour chaque livre, le nombre total de critiques et la note moyenne.
Cet exercice fait partie du cours
Interroger une base de données PostgreSQL en Java
Instructions
- Complétez la requête pour compter le nombre d’avis et calculer la note moyenne.
- Regroupez les résultats par
book_idpour obtenir les statistiques de chaque livre.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
public class Main {
public static void main(String[] args) throws SQLException {
HikariDataSource ds = HikariSetup.createDataSource();
String query = """
-- Count the number of reviews and the average rating
SELECT book_id, ____(*), ____(rating)
FROM book_reviews
-- Group reviews by book_id
____ ____ ____;
""";
try (Connection conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(query);
ResultSet rs = pstmt.executeQuery()) {
while (rs.next()) {
System.out.printf("ID: %d, Count: %d, Average: %.0f%n",
rs.getInt("book_id"), rs.getInt("count"), rs.getDouble("avg"));
}
}
}
}