Android Sqlite 计算:如何分别对两列求和并将一列总和除以另一列总和

Android Sqlite calculation : How to Sum up two Columns sperately and divide one column sum by another column sum

伙计们,根据我所在的时区,我应该说早安

我正在开发一个 android 项目,该项目将组合或连接两个 table 并按 id 显示并且它有效我现在想知道如何分别汇总两列并划分一列由同一函数的另一列求和求和

到目前为止我的进度

  public List<Courses> getListCourses(int id) {
    Courses courses = null;
    List<Courses> coursesList = new ArrayList<>();
    openDatabase();

    Cursor cursor = mDatabase.rawQuery("SELECT * FROM COURSES C INNER JOIN SEMESTER S ON S.semester_id=C.semester_id AND S.LEVEL_ID = C.LEVEL_ID AND S.LEVEL_CODE = C.LEVEL_CODE WHERE C.semester_id =  ?", new String[]{String.valueOf(id)});

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        courses = new Courses(cursor.getInt(0), cursor.getInt(1), cursor.getString(2), cursor.getInt(3), cursor.getInt(4), cursor.getString(5), cursor.getInt(6), cursor.getString(7), cursor.getInt(8));
        coursesList.add(courses);
        cursor.moveToNext();
    }
    cursor.close();
    closeDatabase();
    return coursesList;
}

这是两个table

学期 table

   Id  |   semester_id    |   semester_code    |   level
   -------------------------------------------------
   1   |   1              |   1st Semester     |   100       
   2   |   2              |   2nd Semester     |   100        
   3   |   3              |   1st Semester     |   100       
   4   |   4              |   2nd Semester     |   100        
   5   |   5              |   1st Semester     |   100        

课程Table

 Id  |Se_id| grade |  level |  semester     |  credit_unit  |  gp_unit
 ----------------------------------------------------------------------
 62  |  1  |  A   |  100   |  1st Semester  |  2           |  5
 63  |  1  |  B   |  100   |  1st Semester  |  2           |  4
 64  |  2  |  C   |  100   |  2nd Semester  |  2           |  3
 65  |  2  |  A   |  100   |  2nd Semester  |  2           |  5
 66  |  1  |  C   |  100   |  1st Semester  |  3           |  2

我想总结 CREDIT_UNIT 列并总结 GP_UNIT 列并将 GP_UNIT 总结除以 CREDIT_UNIT 总结我卡住了不知道如何将其添加到此

 Cursor cursor = mDatabase.rawQuery("SELECT * FROM COURSES C INNER JOIN SEMESTER S ON S.semester_id=C.semester_id AND S.LEVEL_ID = C.LEVEL_ID AND S.LEVEL_CODE = C.LEVEL_CODE WHERE C.semester_id =  ?", new String[]{String.valueOf(id)});

可以用求和的方法然后除法存入变量

int creditunit,gpunit;
cursor = db.rawQuery("select sum(credit_unit) from FROM COURSES C INNER JOIN SEMESTER S ON S.semester_id=C.semester_id AND S.LEVEL_ID = C.LEVEL_ID AND S.LEVEL_CODE = C.LEVEL_CODE WHERE C.semester_id =  ? ;", new String[]{String.valueOf(id)});
if(cursor.moveToFirst())
    creditunit =cursor.getInt(0);
else
    creditunit = -1;
cursor.close();

cursor = db.rawQuery("select sum(gp_unit) FROM COURSES C INNER JOIN SEMESTER S ON S.semester_id=C.semester_id AND S.LEVEL_ID = C.LEVEL_ID AND S.LEVEL_CODE = C.LEVEL_CODE WHERE C.semester_id =  ? ;", new String[]{String.valueOf(id)});
if(cursor.moveToFirst())
    gpunit =cursor.getInt(0);
else
    gpunit = -1;
cursor.close();
//perform division
double sol= creditunit/gpunit;

编辑:查询是,

 cursor = db.rawQuery("select sum(credit_unit),sum(gp_unit) from FROM COURSES C INNER JOIN SEMESTER S ON S.semester_id=C.semester_id AND S.LEVEL_ID = C.LEVEL_ID AND S.LEVEL_CODE = C.LEVEL_CODE WHERE C.semester_id =  ? ;", new String[]{String.valueOf(id)});

更新

要在您的 activity、

中访问适配器 class 的代码

将您的任务作为 activity、

中的方法
public void getsolution(double sol)
{
    //code for displaying sol in textview
}

然后在你的适配器中 class,

1.pass 构造函数中的 activity 引用

public adapter(YourActivity activity)

2.After 执行你的 sql 代码,调用 activity 方法

 activity.getsolution(sol);