roomsql查询来检索实体键和值的总和

hkmswyz6  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(659)

我的数据库包含这些“移动”类的列表:

@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;

在我的一个查询中,我只想检索 Category 以及 Quantity 所以我创建了另一个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);

任何帮助都将不胜感激。
提前谢谢

9bfwbjaz

9bfwbjaz1#

要计算数量,必须使用 SUM .
而且,没有必要 DISTINCT ,自 GROUP BY 已经处理好了。我猜您添加了distinct,因为有一个错误。出现错误,因为quantity既不在GROUPBY列中,也不在聚合函数中使用。这通常是一个错误(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

相关问题