У меня есть таблица (таблица1) со списком учащихся от высшего до самого низкого класса.Я хочу разделить их на 3 группы.Но сколько учеников в каждой группе?Сначала я подсчитываю, сколько у меня учеников, затем просматриваю в таблице 1 строку, в которой столбец NumberStudent
равен общему количеству учеников, если я их найду.Я беру число group1, которое означает количество студентов в group1.Студент не должен повторяться в других группах.
table2
содержит, сколько студентов в каждой группе в соответствии с их числом
-------------------------------------------
NumberStudent| group1 | group2 | group3 |
-----------------------------------------
1 | 1 | 0 | 0 |
2 | 2 | 0 | 0 |
3 | 2 | 1 | 0 |
4 | 2 | 2 | 0 |
5 | 2 | 2 | 1 |
-----------------------------------------
- Для 5 студентов group1 = 2студенты, группа 2 = 2 студента и группа 3 = 1 студент
- для 3 студентов, группа 1 = 2 студента, группа 2 = 1 студент и группа 3 = 0 студентов
таблица1
+----+----------+------------+
| id | name | Marks |
+----+----------+------------+
| 1 | Bertrand | 17 |
| 2 | Charles | 10 |
| 3 | Alex | 12 |
| 4 | David | 11 |
| 5 | Eric | 20 |
| 6 | François | 20 |
| 7 | Gaston | 18 |
| 8 | Henri | 20 |
+----+----------+------------+
Я хочу посчитать, сколько студентов в Таблице1
select count(Id) as Total from Table1
Например, если у меня 5 учеников, я делю их на 3 группы в соответствии с количеством в Таблице 2.
Таблица2
NumberStudent| group1 | group2 | group3 |
-----------------------------------------
5 | 2 | 2 | 1 |
У меня 2 студента в Группе 1, 2 студента в Группе2, 1 студент в Группе3
select name,Marks from Table1
where Marks >=10
order by Marks row //from table2 (how can i obtain the number row =2 as parameter )
В Группе 2 есть 2 студента, которых нет в группе1
select name,Marks from Table1
where Marks >=15 and id<> id // the student in groupe2 not mention in group1
order by Marks rowrow //from table1 (group2 for 5 student is 2 so row =2)
Группа 3 имеет 1 ученика, которого нет в группе 1
select name,Marks from Table1
where Marks >17 and id<> id // the student in groupe3 not mention in group1 and group2
order by Marks row row //from table1 (group3 for 5 student is 1 so row =1)
Результат должен быть
1 Henri 20 group1
2 Eric 20 group1
3 François 20 group2
4 Gaston 18 group2
5 Bertrand 17 group3