SimilarPost = aliased(Post)
SimilarPostOption = aliased(PostOption)
post_popularity = db.session.query(func.count(SimilarPost.id)).select_from(
    PostOption).filter(PostOption.post_id == Post.id).correlate(Post
    ).outerjoin(SimilarPostOption, PostOption.val == SimilarPostOption.val
    ).join(SimilarPost, sql.and_(SimilarPost.id == SimilarPostOption.
    post_id, SimilarPost.place_id == Post.place_id)).as_scalar()
popular_post_id = db.session.query(Post.id).filter(Post.place_id == Place.id
    ).correlate(Place).order_by(post_popularity.desc()).limit(1).as_scalar()
deduped_posts = db.session.query(Post, post_popularity).join(Place).filter(
    Post.id == popular_post_id).order_by(post_popularity.desc(), Post.
    timestamp.desc()).all()
How can I query rows with unique values on a joined column?