WITH ranked_ratings AS ( SELECT user_id, rating, rating_date, ROW_NUMBER() OVER ( PARTITIONBY user_id, DATE(rating_date) ORDERBY rating_date DESC ) AS rn FROM ratings ) SELECT user_id, rating, rating_date, DATE(rating_date) AS rating_day FROM ranked_ratings WHERE rn =1;