Таблица состоит из трех столбцов (группа, ранг, оценка) с составным первичным ключом (группа, ранг). Каждая группа имеет как минимум одну запись с рангом 1 и баллом. Если в группе более одной строки, она будет иметь ранг больше единицы и оценку. Например:
+-------+------+-------+
| Group | Rank | Score |
+-------+------+-------+
| 1 | 1 | 100 |
| 1 | 2 | 99 |
| 1 | 3 | 80 |
| 2 | 1 | 70 |
| 2 | 2 | 68 |
| 2 | 3 | 50 |
| 2 | 4 | 20 |
| 3 | 1 | 80 |
+-------+------+-------+
Моя цель состоит в том, чтобы выбрать все строки, «близкие» к максимальному баллу каждой группы, где максимальный балл определен как значение ранга 1 для каждой группы. В приведенном выше примере группа 1 имеет максимальный балл 100, группа 2 имеет максимальный балл 70, группа 3 имеет максимальный балл 80. Мы хотим выбрать все строки, которые не более чем на 5% меньше, чем максимальные баллы. Для приведенного выше примера результирующее выделение вернет:
+-------+------+-------+
| Group | Rank | Score |
+-------+------+-------+
| 1 | 1 | 100 |
| 1 | 2 | 99 |
| 2 | 1 | 70 |
| 2 | 2 | 68 |
| 3 | 1 | 80 |
+-------+------+-------+
Моя вторая цель состоит в том, чтобы поместить соотношение показателя / top_score в качестве нового столбца, который устранил бы вышеуказанную цель.
Заранее спасибо. Для SQLite.