Aan de slagGa gratis aan de slag

Groepen filteren

De nieuwe functie met beoordelingsstatistieken van de Metropolitan Public Library is een hit! Er zijn echter klachten dat boeken met slechts één of twee recensies een misleidend gemiddelde kunnen hebben. Een boek met één 5-sterrenreview lijkt net zo hoog beoordeeld als een geliefde klassieker met honderden positieve recensies.

De bibliotheekdirecteur heeft je gevraagd het systeem uit te breiden zodat gebruikers boeken met te weinig recensies kunnen wegfilteren.

Deze oefening maakt deel uit van de cursus

Query's uitvoeren op een PostgreSQL-database in Java

Cursus bekijken

Oefeninstructies

  • Maak de query af om boeken te filteren op een opgegeven aantal recensies.
  • Stel de parameter veilig in zodat alleen boeken met minstens drie recensies worden getoond.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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"));
                }
            }
        }
    }
}
Code bewerken en uitvoeren