1

何が原因なのかわかりませんが、そのレベルのすべての回答の合計が最も高いレベルを取得しようとしています。

Cursor c = myDataBase
                .rawQuery(
                        "select level "
                                + "from answers where player ='"
                                + player
                                + "' group by level order by sum (score) desc",
                        null);

特定のレベルのすべての回答にはスコア値があります。それは常にレベル10(10レベルのうち)を返しますが、実際には別のレベルが最高のスコアを持っています...私がasc注文を適用すると、それはうまく機能します:s

4

3 に答える 3

2

最高スコアのレベルのみを取得しようとしている場合はhaving、以下のように使用してみてください。

            "select level "
            + "from answers where player ='"
            + player
            + "' group by level "
            + " having sum (score) = max(sum (score))";

編集:

            "select level from (select level, max(levelscore) as maxscore from "+
                               +" (select level, sum (score) as levelscore, "
                               + " from answers where player ='"
                               + player
                               + "' group by level )"
            + " ) where levelscore = maxscore";

また

           "select level from "+
                   +" (select level, sum (score) as levelscore, "
                   + " from answers where player ='"
                   + player
                   + "' group by level )"
                   + "order by levelscore desc LIMIT 1";
于 2012-12-03T15:21:36.693 に答える
1
SELECT level, SUM( score ) AS scoresum
FROM answers
WHERE player = ?
GROUP BY level
ORDERBY scoresum DESC
LIMIT 0, 1
于 2012-12-03T16:26:09.823 に答える
0

そして、なぜこの声明は(より簡単に)

SELECT TOP 1 level 
FROM answers 
WHERE player = {player} 
ORDER BY score DESC

注意してください。プレーヤーの最初の結果を「保存」する前にこのクエリを実行すると、結果は得られません...

サージ

于 2012-12-03T15:24:48.400 に答える