Как использовать order_by при использовании Django group_by, убирая все поля

Я использовал Django-orm, postgresql, Возможно ли сделать запрос по group_by и order_by?

этот стол


| id | b_id | others |

| 1 | 2 | hh |
| 2 | 2 | hhh |
| 3 | 6 | h |
| 4 | 7 | hi |
| 5 | 7 | i |

Я хочу, чтобы результат запроса был таким

| id | b_id | others |

| 1 | 2 | hh |
| 3 | 6 | h |
| 4 | 7 | hi |

or

| id | b_id | others |

| 4 | 7 | hi |
| 3 | 6 | h |
| 1 | 2 | hh |

Я пытался

Table.objects.annotate(count=Count('b_id')).values('b_id', 'id', 'others')
Table.objects.values('b_id', 'id', 'others').annotate(count=Count('b_id'))

Table.objects.extra(order_by=['id']).values('b_id','id', 'others')

Вы можете попробовать это.

from django.db.models import Count
result = Table.objects
    .values('b_id')
    .annotate(count=Count('b_id'))

попробуйте оконную функцию и подзапрос

from django.db.models import Window, F, Subquery, Count
from django.db.models.functions import FirstValue

queryset = A.objects.annotate(count=Count('b_id')).filter(pk__in=Subquery(
    A.objects.annotate(
        first_id=Window(expression=FirstValue('id'), partition_by=[F('b_id')]))
        .values('first_id')))

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