'Sorting and getting position or row nth number of sqlite database for Android studio
I have this table of students
public void onCreate(SQLiteDatabase db) {
String createTableStatement= "CREATE TABLE " + STUDENT_TABLES + " (" + ID_COL + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ STUDENT_NAME_COL + " STRING, " + ENGLISH_CLASS_COL + " FLOAT, "
+ ENGLISH_EXAMS_COL + " FLOAT, "
+ MATHEMATICS_CLASS_COL + " FLOAT, "
+ MATHEMATICS_EXAMS_COL + " FLOAT, "
+ SCIENCE_CLASS_COL + " FLOAT, "
+ SCIENCE_EXAMS_COL + " FLOAT, "
+ SOCIALSTUDIES_CLASS_COL + " FLOAT,"
+ SOCIALSTUDIES_EXAMS_COL + " FLOAT, "
+ RME_CLASS_COL + " FLOAT, "
+ RME_EXAMS_COL + " FLOAT, "
+ BDT_CLASS_COL + " FLOAT, "
+ BDT_EXAMS_COL + " FLOAT, "
+ ICT_CLASS_COL + " FLOAT, "
+ ICT_EXAMS_COL + " FLOAT,"
+ FRENCH_CLASS_COL + " FLOAT, "
+ FRENCH_EXAMS_COL + " FLOAT, "
+ FANTE_CLASS_COL + " FLOAT, "
+ FANTE_EXAMS_COL + " FLOAT, "
+ OTHERS1_CLASS_COL + " FLOAT, "
+ OTHERS1_EXAMS_COL + " FLOAT, "
+ OTHERS2_CLASS_COL + " FLOAT, "
+ OTHERS2_EXAMS_COL + " FLOAT, "
+ TOTALSCORE_COL + " FLOAT) ";
db.execSQL(createTableStatement);
}
Please how do i get the position of student according to their mark.? example if Mary had 10 marks and Joe had 9 marks the last column of Mary would be 1 or 1st
Solution 1:[1]
If yo are after an ordinal position like 1st, 2nd, 3rd etc you can use rank/dense_rank window functions assuming your database supports standard analytic functions:
with students as (
select 'Mary' Student, 9 Mark union all
select 'Joe', 12 union all
select 'Annabelle', 10
)
select Student, Rank() over(order by Mark desc) Position
from students
order by Position;
Solution 2:[2]
You must use ORDER BY
SELECT *, ROW_NUMBER() OVER (ORDER BY mark DESC) pos FROM student
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Stu |
| Solution 2 |
