Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43

Как вычислить сумму 10 наименьших значений в сводном запросе?

09.08.2017, 19:21. Показов 2973. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проводим соревнования, спортсмены 10 команд соревнуются на 5 дистанциях, отдельно мужчины, женщины. Я сформировал протоколы по каждой дистанции, внес результаты, определил каждому участнику занятое место (все в запросах). Сформировал сводный запрос через Union. Получилось следующее: в каждой команде имеется разное количество зачетов (от 8 до 20). Необходимо посчитать сумму десяти наименьших мест в каждой команде (независимо от дистанций). За каждый недостающий зачет команде добавить штраф в размере, примерно, 30 очков. В Excel это делается при помощи функции "наименьший" (кроме штрафа).
Подскажите, пожалуйста.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.08.2017, 19:21
Ответы с готовыми решениями:

Найти сумму наибольших значений строк и произведение наименьших значений столбцов матрицы
Дана действительная матрица размера MxN. Найти сумму наибольших значений элементов ее строк, а также произведение наименьших элементов ее...

Найти сумму наименьших значений столбцов матрицы 5 на 3
Помогите пожалуйста! нужно найти в каждом столбце наименьшее значение, и все их сложить

Найти сумму наименьших значений столбцов матрицы
Здравствуйте. Помогите пожалуйста решить задание "найти сумму наименьших значений столбцов массива"

29
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 12:39  [ТС]
Студворк — интернет-сервис помощи студентам
у нас скоро полночь.
Завтра напишу ранжировку (подсмотрю на работе), посмотрим, что получится.
По нижней границе - будет два десятых места - тоже плохо. Идеальная ранжировка будет по какому-нибудь Код (участника)(второму показателю), который показал данный результат. Тогда одинаковых [mesto] не будет. А так алгоритм хороший и мне кажется правильный и единственный.
Как помощник Вам - я еще слаб. Все мысли - это Ваш труд. Спасибо.

Добавлено через 16 часов 9 минут
SQL
1
2
3
4
5
6
7
8
SELECT Сводный.[название команды], Сводный.место, 
(SELECT SUM(1) FROM Сводный t 
   WHERE t.[название команды]=Сводный.[название команды]
     AND t.место < Сводный.место 
     OR t.[название команды]=Сводный.[название команды]
     AND t.место = Сводный.место AND t.Код <= Сводный.Код ) AS mesto,
 Сводный.Код, Сводный.[Фамилия имя]
FROM Сводный;

Написал ранжировку - теперь всех [mesto] по одному. В данном случае в моем примере. Есть вариант, что 10-11 места будут одинаковые (но на разных дистанциях) и будут принадлежать одному человеку, тогда надо будет вводить еще чего - нибудь

название командыместоmestoКодФамилия имя
киев216гартнер иван
киев2218афанасенко иван
киев332петров
киев3417ботоев жаслан
киев3527антонова вера
киев562петров
киев6717ботоев жаслан
киев8827антонова вера
киев992петров
киев101018афанасенко иван
киев12116гартнер иван
1
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.08.2017, 13:14
Лучший ответ Сообщение было отмечено sergey65 как решение

Решение

Это хорошая идея делать рейтингование по нескольким параметрам, чтобы избежать равенства мест. Но надо иметь в виду, что при слиянии параметров сортировка будет по типу текстовой, где 10 меньше 9. Чтобы избежать надо делать позиционирование на равное количество символов. В предлагаемом запросе такой финт сделан с помощью слияния мест и кодов участников в виде:
SQL
1
RIGHT("0000" & Сводный.место,4) & RIGHT("0000" & Сводный.Код,4)
И сам запрос, где учтены также штрафные баллы.
SQL
1
2
3
4
5
6
7
8
9
10
11
SELECT [название команды], SUM(mesto) AS СуммаMesto, 
SUM(место) AS СуммаМесто, COUNT(*) AS КоличествоКоманд, 
IIf(COUNT(*)<10,"Неполный зачет",NULL) AS Зачет, 
СуммаMesto - ((10-COUNT(*))*30)*(COUNT(*)<10) AS СоШтрафом
FROM (SELECT Сводный.[название команды], Сводный.место, 
(SELECT SUM(1) FROM Сводный t WHERE t.[название команды]=Сводный.[название команды] 
AND RIGHT("0000" & t.место,4) & RIGHT("0000" & t.Код,4)<=RIGHT("0000" & Сводный.место,4) & RIGHT("0000" & Сводный.Код,4)) AS mesto 
FROM Сводный ORDER BY [название команды], Сводный.место)  AS z
WHERE z.mesto<=10
GROUP BY z.[название команды]
ORDER BY [название команды]
1
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 19:42  [ТС]
я немного поработаю с Вашими кодами с Вашего позволения.

Накануне Дня Физкультурника хочу задать еще один смежный вопрос.
Есть ли процедура, которая опишет сколько очков (не мест, а очков) заработает спортсмен на дистанции в зависимости от показанной скорости. Все просто - бежишь быстрее - очков больше. Проблема такая, что при объединении таблиц Справочник и Протокол результатов не все результаты формируют пару с результатами справочника.
Вложения
Тип файла: rar Очки в легкой атлетике1.rar (24.7 Кб, 3 просмотров)
0
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 19:47  [ТС]
Кстати по сортировке в текстовом формате. Я набил протокол результатов в текстовом - отсортировал - вроде все в порядке. Проверю еще раз (предупрежден, значит вооружен)
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.08.2017, 20:24
Цитата Сообщение от sergey65 Посмотреть сообщение
Я набил протокол результатов в текстовом - отсортировал - вроде все в порядке.
В данном случае (Очки в легкой атлетике1) это как раз неверно. Сравнивать числовые результаты текстом затруднительно. Исправил на числа (Double).

По сабжу. Смотрите запрос Очки. Считается, что очки в интервале по низшему результату. Т.е. если 560 очков для 10.4 и 540 для 10.6 то результаты 10.5 и 10.6 дадут 540 очков
Вложения
Тип файла: rar Очки в легкой атлетике1.rar (18.2 Кб, 3 просмотров)
0
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 20:29  [ТС]
а почему у меня запрос очки не открывается?
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
11.08.2017, 20:34
Возможно у Вас маленький экран и запрос находится ниже видимого пространства. Ну попробуйте изменить вид: меню Файл=>Параметры=>Текущая база данных=>Параметры окна документа и установите Вкладки. Запрос развернется на весь экран.
0
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 20:40  [ТС]
Все считается.
Спасибо за науку.

Добавлено через 1 минуту
Цитата Сообщение от mobile Посмотреть сообщение
Возможно у Вас маленький экран и запрос находится ниже видимого пространства. Ну попробуйте изменить вид: меню Файл=>Параметры=>Текущая база данных=>Параметры окна документа и установите Вкладки. Запрос развернется на весь экран.
так и было.
0
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
11.08.2017, 21:10  [ТС]
Есть еще сложная для меня задача.
Как в комплексной таблице посчитать по заданному условию сумму значений полей для одной команды.
Условия: МестоГТО - обязательно и плюс 4 наименьших места других видов спорта. В дальнейшем определить занятое место командой в комплексной спартакиаде по наименьшей сумме занятых мест. Как-то так. Что-то похожее на предыдущие задачи.

Это самая простая выборка - есть очень сложные (потом).
Вложения
Тип файла: rar комплексная таблица.rar (54.9 Кб, 3 просмотров)
0
1 / 1 / 0
Регистрация: 07.08.2017
Сообщений: 43
12.08.2017, 18:35  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
В данном случае (Очки в легкой атлетике1) это как раз неверно. Сравнивать числовые результаты текстом затруднительно. Исправил на числа (Double).
Ваш прием сработал на 100 и 200 метров. Но.
Записывая в протокол результат, показанный спортсменом на 800м, получаем 02:08,5 - это 2 минуты, 8,5 секунд - записать в справочник в числовом формате это невозможно. Что делаю - записываю в текстовом через маску ввода - получаю однотипные записи (02:08.50 с точкой вместо запятой), которые вроде хорошо сортируются и сравниваются. Этого достаточно, чтобы в запросе определилось место (наш с Вами командный запрос основан на поле [место]). Но недостаточно чтобы написать справочник со временем и присваивать очки.
И еще вылезло где - складывая две цифры 32,6 сек. + 38,7 сек. в цифровом формате получаю 71,3 сек - не могу перевести в 01:11,3. Использовал совет с форума. Но он округляет и не дает точное время.
[Сумма]\60 & ":" & Right("00" & ([Сумма] Mod 60),2) & "," & "00" AS Время

Спецы советуют переводить все в цифру, расчленяя запись текстовую. Не могу справиться. Пробовал все переводить в миллисекунды и сними работать - тоже сломал голову и ничего не нашел.

Может посмотрите - или мне создать новую тему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2017, 18:35

Найти сумму наименьших значений строк матрицы
implementation {$R *.dfm} var m,n:integer; A:arrayof integer; procedure TForm1.Button1Click(Sender: TObject); begin ...

Найти сумму наименьших значений элементов в строках матрицы
Дана действительная матрица B(m,n). Найти сумму наименьших значений элементов ее строк.

Найти сумму наименьших значений элементов строк матрицы
Задана матрица целых чисел. Найти сумму наименьших значений элементов её строк. Нужен код

Найти сумму наименьших значений столбцов действительной матрицы
найти сумму наименьших значений столбцов действительной матрицы порядка MxN. очень хорошо было бы с алгоритмом

Найти сумму наименьших значений элементов столбцов двумерного массива A(n,m)
Дан двумерный числовой массив A(n,m).Найти сумму наименьших значений элементов его столбцов.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru