SELECT Запрос1.Тестируемые_Код, Max(Запрос1.Балл) AS [МаксБалл]
FROM Запрос1
GROUP BY Запрос1.Тестируемые_Код
SQL запрос - нужна помощь
В MS Access существует запрос(таблица) с полями: Тестируемые_Код, Шкала, Балл.
Необходимо создать SQL запрос на основе данного, определяющий количество человек по каждой шкале, набравших по данной шкале наибольшее количество баллов.
Исходные данные:
1 Шкала1 2
1 Шкала2 4
2 Шкала1 5
2 Шкала2 3
3 Шкала1 1
3 Шкала2 2
Результат:
Шкала1 1
Шкала2 2
Чо-то голова совсем не варит - видимо жара действует :)
Как определить максимальное количество баллов, которое набрал тестируемый понятно, а вот как определить по какой шкале он их набрал.. короче, меня заклинило..
по твоим данным получается что по шкале1 максимум набрал один человек, 5 баллов, по шкале2 - тоже один человек - максимум 4-е балла, так что результат должен быть:
Шкала1 1
Шкала2 1
Либо если результат должен быть все-таки
Шкала1 1
Шкала2 2
- то объясни задачу получше...
Ты не понял - "набравших по данной шкале наибольшее количество баллов" означает, что человек набрал по данной шкале баллов больше, чем он набрал по другим шкалам. И так для каждого человека.
Не очень понятно, что должно получиться.
1 Шкала1 2
1 Шкала2 4
1 Шкала3 1
2 Шкала1 3
2 Шкала2 1
2 Шкала3 2
Результат:
Шкала1 1
Шкала2 1
Шкала3 0
Пояснения:
Шкала1 = 0
Шкала2 = 0
Шкала3 = 0
Тестируемый №1 из трех шкал максимальный балл набрал по шкале Шкала2 (Шкала2++).
Тестируемый №2 из трех шкал максимальный балл набрал по шкале Шкала1 (Шкала1++).
Тупой вопрос: а шкалы вообще соизмеримы?
Ребят, думаю, вы слишком сложно видите задачу..
Задача элементарная, проблема в том, что меня именно заклинило - как только возвращаюсь к ее решению, получается все тоже самое (не тот результат).
К примеру:
Протестирвался человек.
Данный тест предполагает оценку тестируемого по его результатам по несколким шкалам (исходный запрос - это вычисление баллов по каждой шкале).
Находим по какой именно шкале(ам - решения поставленной задачи, исходя из этого, может быть два) он набрал наибольшее количество баллов. Запись с данной шкалой(ами) в результирующем запросе получает значение 1 (один человек набрал для себя по этой шкале максимальный балл).
А теперь перенесем это на несколько тестируемых: по каждому вычисляем, по какой шкале(ам) они набрал максимальный балл, и подсчитываем количество человек по каждой шкале, которые по этой шкале набрали для себя максимальное количество баллов..
А люди где?
Цитата: Freeman
А люди где?
Какие люди :confused:
В данных задачи сплошные шкалы, а по условию выбирать надо людей.
По нему и надо все считать! По какой шкале Тестируемый №n(Тестируемый с кодом n) набрал максимальный для себя балл, значение той шкалы и увеличивается на единицу в результирующем запросе.
Исходные данные:
1 Шкала1 2
1 Шкала2 4
1 Шкала3 1
2 Шкала1 3
2 Шкала2 1
2 Шкала3 2
Чтобы определить максимальные баллы, которые набрали для себя тестируемые, пишу запрос:
Код:
Результат:
1 4
2 3
А как узнать по каким именно шкалам они набрали эти максимальные баллы?
Чтобы получилось:
1 Шкала2
2 Шкала1
По последнему моему посту, используя соотнесенные подзапросы, получаем:
Код:
SELECT Тестируемые_Код, Шкала
FROM Запрос1 as first_t
WHERE Балл =
(
SELECT MAX (Балл)
FROM Запрос1 as second_t
WHERE first_t.Тестируемые_Код = second_t.Тестируемые_Код
);
FROM Запрос1 as first_t
WHERE Балл =
(
SELECT MAX (Балл)
FROM Запрос1 as second_t
WHERE first_t.Тестируемые_Код = second_t.Тестируемые_Код
);
Всем спасибо за "помощь" :)