AD
SELECT r.*
, coalesce(SUM(cr_subq.field_a) - SUM(cr_subq.field_b), 0) AS field_result
FROM table_r r
LEFT JOIN (
SELECT
c_id
, r_id
, c.field_c * 0.05 AS field_a
, c.field_c * 0.05 * r.percent / 100 AS field_b
FROM table_cr cr
JOIN table_r r on cr.r_id = r.id
JOIN table_c c on cr.c_id = c.id
WHERE status IN ('status1', 'status2')
) cr_subq on r.id = cr_subq.r_id
GROUP BY r.id
ORDER BY field_result DESC, r.id DESC
;
Где есть модели
C
, R
и CR
, где CR.c = models.OneToOneField(C, ...
, а CR.r = models.ForeignKey(R, ...