Фильтр подгрупп в кверисетах django

Рассмотрим следующую таблицу:

Column_A Колонка_B Колонка_C
Первый ПользовательА NULL
Второй UserB NULL
Третий UserC 1
Четвертый ПользовательА 1
Пятый ПользовательВ NULL
Шестой ПользовательВ 2
Седьмой ПользовательC 2

Я хотел бы вернуть все строки (Column_A, Column_B, Column_C) такие, что либо:

  1. Column_C is NULL, or
  2. for every unique value in Column_C, return the first row with Column_B == UserA. If no such row exists, return the first row sorted by Column_B.time_created.

Например, table.objects.magic_queryset(matching_user(UserA)) возвращает

Column_A Column_B (FK) Column_C
Первый ПользовательА NULL
Второй UserB NULL
Fourth UserA 1
Пятый ПользовательВ NULL
Шестой ПользовательВ 2

Я не могу написать набор запросов, который будет эффективно выполнять фильтрацию в одном запросе. Буду признателен за любые подсказки.

Вернуться на верх