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);
伙计们,根据我所在的时区,我应该说早安
我正在开发一个 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);