return 使用房间的总和和平均值

return sum and average using room

我的table结构如下:

@Entity(tableName = "userFitnessDailyRecords")

public class UserFitnessDailyRecords {



    @NonNull
    @PrimaryKey
    private Date forDay;
    private int stepCount;
}

我正在编写的获取总和和平均值的查询如下:

@Dao
public interface UserFitnessDailyRecordsDao {


    @Query("SELECT SUM(stepCount), AVG(stepCount) FROM userFitnessDailyRecords where forDay BETWEEN :startDay AND :endDay ORDER BY forDay ASC")
    UserFitnessDailyRecords getUserFitnessSumAndAverageForLastThirtyDays(Date startDay, Date endDay);


    @Query("DELETE FROM userFitnessDailyRecords")
    void deleteUserFitnessDailyRecord();

}

编译时出现无法 return 值的错误,因为列不包含总和和平均值字段。在这种情况下,return 如何求和和求平均值?

您正在 return 从您的方法 getUserFitnessSumAndAverageForLastThirtyDays() 获取 UserFitnessDailyRecords 条目。但是您的查询选择的列不是 return 那种对象。

记住在 SQL 查询中使用 "AS" 关键字来生成与 POJO 变量名称匹配的列名称别名。

您可以 return 代替该方法的 POJO,可能像这样:

Kotlin 方式:

data class SumAveragePojo(var total: Float, var average: Float)

Java方式:

class SumAveragePojo
{ 
    public float total;
    public float average;
}

并更改方法 return 类型如下:

@Query("SELECT SUM(stepCount) as total, AVG(stepCount) as average FROM userFitnessDailyRecords where forDay BETWEEN :startDay AND :endDay ORDER BY forDay ASC")
SumAveragePojo getUserFitnessSumAndAverageForLastThirtyDays(Date startDay, Date endDay);