Skip to main content
Back to problems
#3358
Easy Database

Books with null ratings

Database
82.8% acceptance
Mar 31, 2026
9
0

No description available.

Solution

Pandas
Time O(1)
Space O(1)
LeetCode
solution.pandas
# Table: books
# 
# +----------------+---------+
# | Column Name    | Type    |
# +----------------+---------+
# | book_id        | int     |
# | title          | varchar |
# | author         | varchar |
# | published_year | int     |
# | rating         | decimal |
# +----------------+---------+
# book_id is the unique key for this table.
# Each row of this table contains information about a book including its unique ID, title, author, publication year, and rating.
# rating can be NULL, indicating that the book hasn't been rated yet.
# 
# Write a solution to find all books that have not been rated yet (i.e., have a NULL rating).
# 
# Return the result table ordered by book_id in ascending order.
# 
# The result format is in the following example.
#
# Example 1:
# Input:
# books table:
# +---------+------------------------+------------------+----------------+--------+
# | book_id | title                  | author           | published_year | rating |
# +---------+------------------------+------------------+----------------+--------+
# | 1       | The Great Gatsby       | F. Scott         | 1925           | 4.5    |
# | 2       | To Kill a Mockingbird  | Harper Lee       | 1960           | NULL   |
# | 3       | Pride and Prejudice    | Jane Austen      | 1813           | 4.8    |
# | 4       | The Catcher in the Rye | J.D. Salinger    | 1951           | NULL   |
# | 5       | Animal Farm            | George Orwell    | 1945           | 4.2    |
# | 6       | Lord of the Flies      | William Golding  | 1954           | NULL   |
# +---------+------------------------+------------------+----------------+--------+
# Output:
# +---------+------------------------+------------------+----------------+
# | book_id | title                  | author           | published_year |
# +---------+------------------------+------------------+----------------+
# | 2       | To Kill a Mockingbird  | Harper Lee       | 1960           |
# | 4       | The Catcher in the Rye | J.D. Salinger    | 1951           |
# | 6       | Lord of the Flies      | William Golding  | 1954           |
# +---------+------------------------+------------------+----------------+
# Explanation:
# The books with book_id 2, 4, and 6 have NULL ratings.
# These books are included in the result table.
# The other books (book_id 1, 3, and 5) have ratings and are not included.
# The result is ordered by book_id in ascending order

import pandas as pd

def find_unrated_books(books: pd.DataFrame) -> pd.DataFrame:
  result = books[books['rating'].isna()].sort_values('book_id')
  return result[['book_id', 'title', 'author', 'published_year']]