我的数据库包含这些“运动”类的列表:
@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);
任何帮助将不胜感激。
预先感谢
答案 0 :(得分:0)
要对数量求和,必须使用SUM
。
此外,DISTINCT
也不需要,因为GROUP BY
已经解决了这一问题。我的猜测是您添加了distinct,因为有一个错误。出现错误的原因是,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