Let's say I have a table like this:
class Developer(models.Model):
first_name = models.CharField(max_length=255)
last_name= models.CharField(max_length=255)
team = models.CharField(max_length=255)
closed_tickets = models.IntegerField()
objects = DeveloperManager()
I want to write a query which returns:
Write SQL to show percentage of team tickets closed by every developer and rank developers by contribution level. something like this:
is there a way to it in a one query?
I am trying to think in the direction of annotation with distinct clause
class DeveloperManager(models.Manager):
def rank(self):
return self.order_by('team').annotate(
total=models.Sum(
'closed_tickets'
),
piece=models.F('closed_tickets') / models.F('total'),
).distinct('team').values()
but it returns me an error:
NotImplementedError: annotate() + distinct(fields) is not implemented.