Is it possible to use getContentResolver().query() when I want sum(column)?
OR
Do I have to make raw query to db handle?
When providing the array of columns to ContentResolver.query, wrap the column name with the sum() function
String[] columns = new String[] { "sum(" + columnName + ")" };
Cursor cursor = getContentResolver().query(
    content_uri,
    columns,
    selection,
    selectionArgs,
    sort
);
cursor.moveToFirst();
int columnSum = cursor.getInt(0);
    Rahul
OK, it seems that its not possible using getContentResolver().query().
I had to get db connection and make rawQuery.
 ContentProviderClient client =  getContentResolver().acquireContentProviderClient(AUTHORITY);
 SQLiteDatabase dbHandle= ((MyContentProvider)client.getLocalContentProvider()).getDbHandle();
 Cursor cursor = dbHandle.rawQuery("SELECT sum("+COLUM_NNAME+") FROM "+TABLE_NAME +" WHERE "+WHERE_CLAUSE , null);
 cursor.moveToFirst();
 int cnt =  cursor.getInt(0);
 cursor.close();
 cursor.deactivate();
 client.release();
    ACCEPTED ANSWER IS WRONG
IT IS POSSIBLE IN CONTENTPROVIDER AS
 String[] columns = new String[] { "sum(" + columnName + ")" };
    Cursor cursor = getContentResolver().query(
        content_uri,
        columns,
        selection,
        selectionArgs,
        sort
    );
int columnSum = cursor.getInt(0);
Only mistake Tom did is he forget to do :
cursor.moveToFirst();
    You could use the 'simpleQueryForLong()'-Method.
来源:https://stackoverflow.com/questions/5854343/android-content-provider-sum-query