У меня есть таблица, которая выглядит примерно так:
CREATE TABLE student_results (целое число id, имя varchar (32), число с плавающей запятой);
Позволяет сделать следующие два предположения:
- Предположим, что оценка изменяется от 0 до максимум 100.
- Предположим, что я хочу оценивать студентов по «размерам шагов» 10
поэтому я хочу применить следующую оценку:
Score Grade Awarded
0-10 GRADE9
10-20 GRADE8
20-30 GRADE7
30-40 GRADE6
40-50 GRADE5
50-60 GRADE4
60-70 GRADE3
70-80 GRADE2
80-90 GRADE1
99-100 GENIUS
Я хотел бы написать SQL-запрос, который принимает следующие входные аргументы:
lowest score: 0 in this example
highest score: 100 in this example
'step' size: 10 in this example
Как всегда, если возможно, яхотел бы написать такой запрос с использованием ANSI SQL.Если мне нужно выбрать базу данных, то в порядке УМЕНЬШЕНИЯ предпочтения это должно быть:
Может кто-нибудь пожалуйстаобъясните, как я могу написать SQL-запрос, который выполняет такую оценку, используя приведенную выше таблицу в качестве примера?
[Edit]
Sample input data
1, 'homer', 10.5
2. 'santas little helper', 15.2
3, 'bart', 20.5
4, 'marge', 40.5
5. 'lisa', 100
У меня будет SQL-функция grade_rank (), которая оценивает ученика:
Аргументы для функции grade_rank ():
1st argument: LOWEST possible score value
2nd argument: HIGHEST possible score value
3rd argument: step size, which determines the levels/divisions between the ranks
select id, name, grade_rank(0,100, 10) grade from student_scores;
выходные данные (основанные на вводе выше) должны быть:
1, homer, GRADE9
2. santas liitle helper GRADE9
3, bart, GRADE8
4, marge, GRADE6
5. lisa, GENIUS