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可能看起来像这样

  • 联盟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 " + 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 + "'"