Я хочу вычислить сумму поля веса всех записей в таблице, я пытался:
В классе Дао
@Dao
interface FooDAO {
@Query("SELECT sum(purchaseWeight) FROM myTable")
suspend fun calculateSumOfAllWeight(): Int
}
В классе репозитория
class FooRepository(application: Application) {
private var fooDAO: FooDAO
private var sumOfAllWeight = MutableLiveData<Int>()
init {
// skipping other code
CoroutineScope(Dispatchers.IO).launch {
sumOfAllWeight.postValue(fooDAO.calculateSumOfAllWeight())
}
}
fun getSumOfAllWeight(): MutableLiveData<Int> {
Log.e("SUM_OF_WEIGHT", " sumOfAllWeight "+ sumOfAllWeight.value)
return sumOfAllWeight
}
}
но он печатает
E/SUM_OF_WEIGHT: sumOfAllWeight null
в logcat, я упоминал This Link для работы с sum () в sqlite.
Обновление
Я искал и нашел это и это SO сообщений и обновлений
@Query("SELECT sum(purchaseWeight) as value FROM myTable")
suspend fun calculateSumOfAllWeight(): Int
и найдено Этот и обновленный
@Query("SELECT COALESCE(sum(COALESCE(purchaseWeight,0)), 0) From myTable")
suspend fun calculateSumOfAllWeight(): Int
, но все тот же null
возвращается