subq = select([count(1).label('count'), user_subscriptions_table.c.user_id], group_by=[user_subscriptions_table.c.user_id]).alias('foo') session.query(User).select_from(user_table.join(subq)).order_by(subq.c.count)