Comment Comment by amalashkevich There is no need to wrap it with a query. You can just add a filter: mynewquery = myquery.filter(lambda c: c.name > 'G') The new query will produce the following SQL: SELECT `c`.`id` FROM `customer` `c` LEFT JOIN `order` `order-1` ON `c`.`id` = `order-1`.`customer` WHERE `c`.`name` > 'G' GROUP BY `c`.`id` HAVING coalesce(SUM(`order-1`.`total_price`), 0) > 1000 parent amalashkevich 12 years ago