Filtrera grupper
Metropolitan Public Librarys nya funktion för betygsstatistik är en succé! Några låntagare har dock påpekat att böcker med bara en eller två recensioner kan ge missvisande genomsnitt. En bok med en enda femstjärnig recension ser lika högt betygsatt ut som en älskad klassiker med hundratals positiva omdömen.
Bibliotekets chef vill att du förbättrar systemet så att användare kan filtrera bort böcker med för få recensioner.
Den här övningen är en del av kursen
Fråga en PostgreSQL-databas i Java
Övningsinstruktioner
- Komplettera frågan för att filtrera böcker utifrån ett angivet antal recensioner.
- Ange parametern på ett säkert sätt så att endast böcker med minst tre recensioner visas.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
public class Main {
public static void main(String[] args) throws SQLException {
HikariDataSource ds = HikariSetup.createDataSource();
String query = """
SELECT book_id, COUNT(*), AVG(rating)
FROM book_reviews
GROUP BY book_id
-- Filter books with a specified number of reviews
____ count(*) >= ?
""";
try (Connection conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(query)) {
// Display books with at least three reviews
pstmt.____(____, ____);
try (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"));
}
}
}
}
}