Room SQL 查询以检索实体键和值的总和

Room SQL query to retrieve entity key and sum of values

我的数据库包含这些列表 "Movement" class:

@PrimaryKey (autoGenerate = true)
private int NumeroDeOperacion;
private int FechaYear;
private int FechaMonth;
private int FechaDay;
private String TipoOperacion;
private String Category;
private String Notas;
private float Quantity;

在我的一个查询中,我只想检索 CategoryQuantity,所以我创建了另一个 POJO 对象,如下所示:

public class Category {

    @ColumnInfo(name = "Category")
    public String name;

    @ColumnInfo(name = "Quantity")
    public float quantity;

    public Category(){}

}

我想得到的是特定年份的所有不同 Category 和所有 Quantity.

的总和

所以,假设我有这样的东西:

Category   Quantity

A          5
B          10
C          5
A          15
B          20

我想得到:

Category   Quantity

A          20
B          30
C          5

我试过这个查询,但它只获取每个 Category:

的最后一个条目
@Query("SELECT DISTINCT Category, Quantity FROM OperacionesTable WHERE FechaYear = :year GROUP BY CategoryORDER BY Quantity DESC")
LiveData<List<Category>> getGastosCategoryTotalsInYear(int year);

如有任何帮助,我们将不胜感激。

提前致谢

要对数量求和,您必须使用 SUM

另外,不需要 DISTINCT,因为 GROUP BY 已经解决了。我的猜测是你添加了不同的,因为有一个错误。错误在那里,因为 Quantity 既不在按列分组中,也不在聚合函数中使用。这通常是一个错误(MySQL 除外,它只会给你一个随机结果)。

无论如何,这应该可以解决问题:

SELECT 
  Category, 
  SUM(Quantity) as TotalQuantity -- Column alias, to give the column a proper name
FROM 
  OperacionesTable 
WHERE 
  FechaYear = :year 
GROUP BY 
  Category
ORDER BY SUM(Quantity) DESC