Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django子查询每个公司的平均员工工资_Django_Subquery - Fatal编程技术网

Django子查询每个公司的平均员工工资

Django子查询每个公司的平均员工工资,django,subquery,Django,Subquery,我一直在寻找一种更好的使用子查询注释和Avg的方法,但没有找到。这就是我目前所拥有的,它给了我每个公司的平均雇员人数,但这很难看 companies = Company.objects.all() for company in companies: salary = [] for emp in company.comp_emp.all(): salary.append(emp.salary) print(sum(salary) / len(salary))

我一直在寻找一种更好的使用子查询注释和Avg的方法,但没有找到。这就是我目前所拥有的,它给了我每个公司的平均雇员人数,但这很难看

companies = Company.objects.all()
for company in companies:
    salary = []
    for emp in company.comp_emp.all():
        salary.append(emp.salary)
    print(sum(salary) / len(salary))

>>> 99054.4
>>> 96403.75
>>> 498351.375
我尝试了以下方法,但没有成功

companies = Employee.objects.filter(company=OuterRef('pk'))
employee_count = Company.objects.annotate(avg_emp_salary=Avg(Subquery(companies.values('salary')[:])))

>>> 46907.0
>>> 147288.0
>>> 43158.0
我得到的值是不正确的,但我也无法理解它们来自何处。这只是为了我自己的学习目的


提前谢谢。

我认为在这里使用子查询有点过分了。对此,可以使用更简单的语法

companies = Company.objects.annotate(avg_emp_salary=Avg('employee__salary'))

我想如果你把你的模型包括进去会有帮助的。顺便说一下,你不是在计算员工人数。你在计算平均工资。谢谢!我想我是在想子查询,Django网站上的文档对我来说没有太多意义。我想我会继续玩下去,看看能找到什么。再次感谢,不用担心。感谢我的一个好方法是将答案标记为已接受。:)