Javascript 平均值(列分数)未生成平均值
在我的应用程序中。我有一系列的桌子Javascript 平均值(列分数)未生成平均值,javascript,android,sqlite,android-studio,create-view,Javascript,Android,Sqlite,Android Studio,Create View,在我的应用程序中。我有一系列的桌子 联盟 投球手 系列 游戏 当投球手输入他/她的得分时,id可能看起来像这样 联盟id=2 保龄球手id=1 序列号=1 游戏id=1,2,3 在我的游戏表中,我记录了每一场游戏的分数(即1、2、3)。我希望能够生成一个系列的平均分数(即1) 我知道这是可以做到的 CREATE VIEW AVERAGE_SCORE AS SELECT AVG(COLUMN_SCORE) FROMFROM " + Game.TABLE_NAME + " WHERE " +
- 联盟
- 投球手
- 系列
- 游戏
- 联盟id=2
- 保龄球手id=1
- 序列号=1
- 游戏id=1,2,3
CREATE VIEW AVERAGE_SCORE AS SELECT AVG(COLUMN_SCORE) FROMFROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'" + " ORDER BY " +
Game.COLUMN_TIMESTAMP + " DESC";
我已使用以下代码设法获得一个显示在logcat中的值:
public int getSeriesAverage(String leagueId, String bowlerId, String seriesId)
{
int total = 0;
SQLiteDatabase database = getReadableDatabase();
Cursor cursor = database.rawQuery("CREATE VIEW IF NOT EXISTS AVERAGE_SCORE AS SELECT AVG(COLUMN_SCORE) FROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'" + " ORDER BY " +
Game.COLUMN_TIMESTAMP + " DESC", null);
if (cursor.moveToFirst()) {
do {
total = cursor.getInt(0);
}while (cursor.moveToNext());
}
cursor.close();
//Close Database Connection
database.close();
Log.d("GET AVERAGE FROM SQL","Average = >>>>" + total + "<<<<");
return total;
}
更新方法:
public int getSeriesAverage(String leagueId, String bowlerId, String seriesId)
{
int total = 0;
SQLiteDatabase database = getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT AVG(" + Game.COLUMN_SCORE + ") FROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'", null);
if (cursor.moveToFirst()) {
do {
total = cursor.getInt(0);
}while (cursor.moveToNext());
}
cursor.close();
//Close Database Connection
database.close();
Log.d("GET AVERAGE FROM SQL","Average = >>>>" + total + "<<<<");
ContentValues values = new ContentValues();
values.put(Series.COLUMN_SERIES_AVERAGE,Series.getAverage());
Log.d("GET AVERAGE FROM SQL","Average = >>>>" + Series.COLUMN_SERIES_AVERAGE + "<<<<");
return total;
}
public int-getSeriesAverage(String-leagueId、String-bowlerId、String-seriesId)
{
int-total=0;
SQLiteDatabase=getReadableDatabase();
Cursor Cursor=database.rawQuery(“从“+Game.TABLE\u NAME+”中选择平均值(“+Game.COLUMN\u SCORE+”),其中“+Game.COLUMN\u leagueId+”=”、“+leagueId+”、“+Game.COLUMN\u BOWLER\u ID+”、“+Game.COLUMN\u SERIES\u ID+”、“=”、“+seriesId+”,null);
if(cursor.moveToFirst()){
做{
总计=cursor.getInt(0);
}while(cursor.moveToNext());
}
cursor.close();
//关闭数据库连接
close()数据库;
Log.d(“GET AVERAGE FROM SQL”,“AVERAGE=>>>>”+total+“”+Series.COLUMN\u Series\u AVERAGE+”您的SQL语句是一个CREATE语句,而不是用于获取行的查询。因此,请更改它:
"SELECT AVG(" + Game.COLUMN_SCORE + ") FROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'"
您可能还需要更改:total=cursor.getInt(0);
我不确定将产生的平均值是否会四舍五入到int。
最好使用getDouble
或getString
,然后解析到int
是否调试以查看此0是否来自inttotal=0;
,因为游标不返回任何行,或者它返回1行,平均值为0?还有一件事:您不需要按部分进行所有排序,您不希望按特定顺序获取行,但是单个值是的,我已调试,int-total确实返回0。我在上面添加了一个屏幕截图。我将创建更改为选择,现在我接近“选择”:语法错误(代码1):,编译时:选择平均分数作为选择平均值(列分数)从leagueId='1'和bowlerId='1'和seriesId='1'的游戏中删除选择AVERAGE_SCORE作为或复制并粘贴我的声明我在发布后立即注意到这一点,我已经删除了它,我得到的原因是:android.database.sqlite.SQLiteException:没有这样的列:column_SCORE(代码1):,编译时:选择AVG(column_SCORE)从leagueId='1'和bowlerId='1'和seriesId='1'的游戏中,你想要平均值的列的名称是什么?它是game.column_SCORE,我尝试将此输入,但仍然找不到该列,
public class Series {
public static final String TABLE_NAME = "Series";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_LEAGUE_ID = "league_id";
public static final String COLUMN_BOWLER_ID = "bowler_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_SERIES_AVERAGE = "average";
public static final String COLUMN_TIMESTAMP = "timestamp";
private int id;
private String league_id;
private String bowler_id;
private String name;
private String average;
private String timestamp;
// Create table SQL query
public static final String CREATE_TABLE =
"CREATE TABLE " + TABLE_NAME + "("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_LEAGUE_ID + " TEXT,"
+ COLUMN_BOWLER_ID + " TEXT,"
+ COLUMN_NAME + " TEXT,"
+ COLUMN_SERIES_AVERAGE + " TEXT,"
+ COLUMN_TIMESTAMP + " DATETIME DEFAULT CURRENT_TIMESTAMP"
+ ")";
public Series() {
}
public Series(int id, String league_id, String bowler_id, String name, String average, String timestamp) {
this.id = id;
this.league_id = league_id;
this.bowler_id = bowler_id;
this.name = name;
this.average = average;
this.timestamp = timestamp;
}
public int getId() {
return id;
}
public String getLeagueId() {return league_id;}
public String getBowlerId() {return bowler_id;}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAverage() {
return average;
}
public void setAverage(String average) {
this.average = average;
}
public String getTimestamp() {
return timestamp;
}
public void setId(int id) {
this.id = id;
}
public void setLeagueId(String league_id) {
this.league_id = league_id;
}
public void setBowlerId(String bowler_id) {
this.bowler_id = bowler_id;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
}
public int getSeriesAverage(String leagueId, String bowlerId, String seriesId)
{
int total = 0;
SQLiteDatabase database = getReadableDatabase();
Cursor cursor = database.rawQuery("SELECT AVG(" + Game.COLUMN_SCORE + ") FROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'", null);
if (cursor.moveToFirst()) {
do {
total = cursor.getInt(0);
}while (cursor.moveToNext());
}
cursor.close();
//Close Database Connection
database.close();
Log.d("GET AVERAGE FROM SQL","Average = >>>>" + total + "<<<<");
ContentValues values = new ContentValues();
values.put(Series.COLUMN_SERIES_AVERAGE,Series.getAverage());
Log.d("GET AVERAGE FROM SQL","Average = >>>>" + Series.COLUMN_SERIES_AVERAGE + "<<<<");
return total;
}
"SELECT AVG(" + Game.COLUMN_SCORE + ") FROM " + Game.TABLE_NAME + " WHERE " + Game.COLUMN_LEAGUE_ID + " = '" + leagueId + "'" + " AND " + Game.COLUMN_BOWLER_ID + " = '" + bowlerId + "'" + " AND " + Game.COLUMN_SERIES_ID + " = '" + seriesId + "'"