如何在 Django ORM 中使用 GROUP BY

How to use GROUP BY in Django ORM

我陷入了一种情况,我需要一个等效的 Django ORM 用于以下 sql 查询。请帮助,我是 django 的新手。

SELECT column1, column2, sum(column3) as total
FROM table1
GROUP BY column1;

我试过了 Table1.objects.values('column1', 'column2').annotate(total=Sum(column3)) 上面的 orm 是这样的:

SELECT column1, column2, sum(column3) as total
FROM table1
GROUP BY column1, column2;

它正在对我不想要的 column1 和 column2 进行分组。

column2 没有出现在 group by 中,这将 return 错误

SELECT column1, sum(column3)
FROM table1
GROUP BY column1;

这很适合你

看看您正在有效地尝试做的是:

Column1  Column2  Column3
MP       C1       100
MP       C1       110
MP       C2       100
MH       C3       50
MH       C4       85
RJ       C5       100

现在,如果您这样做 SELECT Column1, Column2, sum(Column3) as total FROM table1 GROUP BY Column1,这将变得很奇怪(也就是说,它将 select Column2 的第一个值,然后将对 Column1 中的每个值进行分组 - 这显然会给错误的结果(如果不是错误))。相反,有意义的是,您 select Column1 和 Column2 一起在 Group By 中,以便 groupby 合理地工作,否则不要在 selecting 列时写 Column2 。

如果这个解释让你满意,那么你在问题中所写的(你自己想出的解决方案)就可以解决你的目的。