Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Подсчёт процентного соотношения данных


Автор: Karam_S 28.7.2009, 15:19
Есть база данных студентов и их оценок.
Необходимо определить процентное соотношение оценок: 
например, "5" - 20%, "4" - 50% и т.д.
Количество оценок по каждому курсу определяю без проблем.
А вот их процентное соотношение - с помощью Exel по специальной таблице.
Можно ли всё подсчитать в среде Access? Прошу помощи.

Прилагаю в архиве:
Выделенную часть базы в файле Student.mdb формата 2002-2003.
Желаемый вид таблицы данных, но сделанный, к сожалению, в Word-е.

Автор: bopoha 28.7.2009, 15:49
Цитата(Karam_S @  28.7.2009,  15:19 Найти цитируемый пост)
Можно ли всё подсчитать в среде Access?

Можно. Чтобы посчитать эти цифры, вам необходимо знать общее количество оценок. Это можно сделать при помощи 2-го запроса. Его можно добавить к 1-му без связи и использовать поле как обычно или использовать вычисляемое поле:
Код

SELECT ..., (SELECT qry_marks_counter.count_marks FROM qry_marks_counter ) As count_marks, (count_5 / count_marks) * 100 As percent_5 FROM ...

Автор: Karam_S 29.7.2009, 17:06
bopoha
Спасибо за идею!
У меня стало получаться.  smile 
Получилось по такому коду:
Код

SELECT [01Соотн оц защиты].ОцЗащ, [01Соотн оц защиты].[Count-Фамилия], Round([01Соотн оц защиты].[Count-Фамилия]/[Всего оц защиты].[Count-ОцЗащ],3)*100 AS Проценты
FROM [Всего оц защиты], [01Соотн оц защиты]
GROUP BY [01Соотн оц защиты].ОцЗащ, [01Соотн оц защиты].[Count-Фамилия], Round([01Соотн оц защиты].[Count-Фамилия]/[Всего оц защиты].[Count-ОцЗащ],3)*100;


Для округления результата ещё пришлось использовать функцию Round.
Странно только ведёт она себя в Access 2007, она корректно срабатывает если после выражения ставить не "," а ";" и цифра уже обозначает не количество цифр после запятой, а всего количество цифр. Хотя в справке об этом не сказано.

Ещё раз спасибо за помощь!  smile 

Автор: bopoha 30.7.2009, 10:35
Цитата(Karam_S @  29.7.2009,  17:06 Найти цитируемый пост)
Странно только ведёт она себя в Access 2007, она корректно срабатывает если после выражения ставить не "," а ";"

В конструкторе запросов всегда в выражениях вместо "," используется ";".

Вот еще про работу функции Round() http://5codelines.net/okrugleniya/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)