【问题标题】:How to use GROUP BY in Django ORM如何在 Django ORM 中使用 GROUP BY
【发布时间】:2016-06-14 12:49:09
【问题描述】:

我陷入了一种情况,我需要一个等效的 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)) 这使得上述形式如下:

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

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

【问题讨论】:

标签: mysql django orm aggregate annotate


【解决方案1】:

看看你有效地尝试做的是:

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,这会变得很奇怪(也就是说,它会选择 Column2 的第一个值,然后对 Column1 中的每个值进行分组 - 这显然会给出错误的结果(如果不是错误的话) )。更有意义的是,您在 Group By 中同时选择 Column1 和 Column2,以便 groupby 合理地工作,否则在选择列时不要写 Column2。

如果您的解释令您满意,那么您在问题中所写的内容(您自己提出的解决方案)将能够解决您的目的。

【讨论】:

    【解决方案2】:

    column2 没有出现在 group by 会返回错误

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

    这很适合你

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 2019-02-28
      • 2021-11-25
      • 1970-01-01
      • 2021-11-24
      • 2018-01-14
      • 2016-04-17
      • 2015-08-21
      相关资源
      最近更新 更多