Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
1

Максимальное значение в строке в разных колонках

23.10.2014, 00:13. Просмотров 3439. Ответов 12
Метки нет (Все метки)

Добрый день,

Прошу Вашей помощи новичку в ACCESS

Есть таблица
СуммаАренды1 СуммаАренды2 СуммаАренды3 СуммаАренды4
Магазин-1 100 50 300 400
Магазин-2 200 100 200 250
Магазин-3 300 150 340 500

Нужно выбрать максимальное и минимальное значение из колонок "СуммаАренды..." по каждому магазину.

Как я делал в EXCEL

Макс(Число1;Число2;Число3;Число4;...)

СуммаАренды1 СуммаАренды2 СуммаАренды3 СуммаАренды4 МАКС. ЗНАЧ
Магазин-1 100 50 300 400 МАКС(100;50;300;400)
Магазин-2 200 100 200 250 МАКС(200;100;200;250)
Магазин-3 300 150 340 500 МАКС(300;150;340;500)

Как то же самое сделать в ACCESS в "Построителе выражений"в запросе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2014, 00:13
Ответы с готовыми решениями:

Два ответа в разных колонках одного запроса
Прошу помочь с SQL запросом. Исходная таблица: Numx|IFx|Summx 1|True|10 1|True|20...

Реализовать перегрузку функции, определяющую максимальное значение в массивах разных типов
Добрый день. Пытаюсь разбираться с перегрузкой функций. стоит задача "Используя перегрузку...

Найти максимальное значение в каждой строке матрицы
Как найти максимальное значение в каждой строке? for (int i=0; i<rows; i++) { for...

Найти максимальное значение элемента в строке матрицы
В данном двухмерном массиве A с целыми коэффициентами для каждой строки найти максимальное значение...

12
Эксперт MS Access
26554 / 14281 / 3158
Регистрация: 28.04.2012
Сообщений: 15,672
23.10.2014, 00:44 2
Предположу, что поля СуммаАренды(i) это помесячные или годовые начисления (или платежи). Если так, то такая структура противоречит всем принципам реляционных баз данных, к которым относится и JetSQL MS Access.
Надо сделать:
1. Справочник магазинов
кодМагазина (счетчик, ключ), Наименование, Адрес

2. Начисления аренды
кодНачисления (счетчик, ключ), кодМагазина, ПериодНачисления (год/год, месяц), Сумма


И вот с такой структурой можно вычислять все элементарными простыми запросами

Например, запрос который Вы хотите сделать будет такой
SQL
1
2
3
SELECT Магазины.кодМагазина, Магазины.Наименование, MAX(Сумма) AS МаксСумма
FROM Магазины INNER JOIN Начисления ON Магазины.кодМагазина=Начисления.кодМагазина
GROUP BY Магазины.кодМагазина, Магазины.Наименование
Такой запрос в 2 минуты делается в конструкторе 10 нажатиями мышкой
0
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
23.10.2014, 01:06  [ТС] 3
Нет это не период оплаты, а условия оплаты, рассчитывается разными методами, и платится по наибольшему или наименьшему начислению

А насчет пункта 1 все именно так и сделанно
0
Эксперт MS Access
26554 / 14281 / 3158
Регистрация: 28.04.2012
Сообщений: 15,672
23.10.2014, 01:47 4
Цитата Сообщение от _Semen_ Посмотреть сообщение
Нет это не период оплаты, а условия оплаты, рассчитывается разными методами, и платится по наибольшему или наименьшему начислению
Принцип тот же самый, что и с оплатами. Только дополнительно справочник типов условий. Остальное все то же самое.
Вот сами посмотрите - изменятся законодательство или поменяются арендодатели и наделают условий по иным методам. И что - каждый раз рисовать в таблице новое поле и к нему ПО? Да с ума спрыгнуть можно. Делается справочник типов условий. Нужно добавить новый тип: без проблем! Пишем новую строку в справочнике. И все!
0
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
23.10.2014, 09:09  [ТС] 5
Структура (табличка) описанная выше это запрос, данные в ней динамические (формулы запрашивающие значения из таблицы: площадь, ндс, продажи, курс валют, фиксации и пр. значения), т.к. каждая колонка (в запросе) рассчитывается индивидуальным расчетом, не представляю как это можно запихнуть все в один столбец. да и громоздить гору не хочется (боюсь ошибиться).
Наверное лучше упростить вопрос до:

Как прописать формулу как в EXCEL Макс(Число1;Число2;Число3;Число4;...) где вместо числа можно проставлять либо формулы, либо колонки.
0
Модератор
Эксперт MS Access
9963 / 3987 / 643
Регистрация: 07.08.2010
Сообщений: 11,207
Записей в блоге: 3
23.10.2014, 09:36 6
попробовала в лоб ---работает
SQL
1
2
3
4
5
6
SELECT wwmag.Код,
 wwmag.маг,
 IIf(wwmag.[са1]>wwmag.[са2],wwmag.[са1],wwmag.[са2]) AS w1,
 IIf(wwmag.[са3]>w1,wwmag.[са3],w1) AS w2,
 IIf(wwmag.[са4]>w2,wwmag.[са4],w2) AS wmax
FROM wwmag;
или можно выбор убрать в функцию и вызывать
SQL
1
2
SELECT wwmag.Код, wwmag.маг,mfunc(wwmag.[са1],wwmag.[са2],wwmag.[са3],wwmag.[са4]) AS wmax
FROM wwmag;
0
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
23.10.2014, 09:51  [ТС] 7
А как этот Код SQL прописать в построителе выражении ?

И что значит mfunc?

Извиняюсь за вопросы дилетанта )
0
Модератор
Эксперт MS Access
9963 / 3987 / 643
Регистрация: 07.08.2010
Сообщений: 11,207
Записей в блоге: 3
23.10.2014, 09:53 8
Visual Basic
1
2
3
4
5
6
7
8
Function mfunc(n1, n2, n3, n4) As Long
Dim w1, w2
 w1 = IIf(n1 > n2, n1, n2)
 w2 = IIf(n3 > w1, n3, w1)
 mfunc = IIf(n4 > w2, n4, w2)
 Debug.Print n1, n2, n3, n4, "="
Debug.Print w1, w2, mfunc; "="
End Function

SQL
1
2
3
SELECT wwmag.Код, wwmag.маг,
mfunc([са1],[са2],[са3],[са4]) AS wmac1
FROM wwmag;
1
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
23.10.2014, 10:15  [ТС] 9
Ввел в построителе выражений

Выражение3: mfunc("БазаДляСкидки", "Скидка", "СкидкаФиксМес", "СкидкаФиксПлощадь")

Ругается на "Ошибка синтаксиса во введенном выражении и потом подсвечивает запятую (
0
7876 / 4919 / 542
Регистрация: 27.03.2013
Сообщений: 17,636
23.10.2014, 10:19 10
Цитата Сообщение от _Semen_ Посмотреть сообщение
...в построителе выражений ... подсвечивает запятую...
Там точку с запятой попробуйте поставить везде где подсвечиваться будет
0
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
24.10.2014, 10:10  [ТС] 11
Поставил точку с запятой ; пишет неопределенная функция mfunc в выражении

Добавлено через 23 часа 47 минут
Вопрос остался открытым (
0
Модератор
Эксперт MS Access
9963 / 3987 / 643
Регистрация: 07.08.2010
Сообщений: 11,207
Записей в блоге: 3
24.10.2014, 11:09 12
Visual Basic
1
2
3
4
5
6
7
8
9
10
''функцию надо поместить в общем модуле
 
public Function mfunc(n1, n2, n3, n4) As Long
Dim w1, w2
 w1 = IIf(n1 > n2, n1, n2)
 w2 = IIf(n3 > w1, n3, w1)
 mfunc = IIf(n4 > w2, n4, w2)
 Debug.Print n1, n2, n3, n4, "="
Debug.Print w1, w2, mfunc; "="
End Function
в конструкторе выражений
SQL
1
wmac1: mfunc([са1];[са2];[са3];[са4])
1
0 / 0 / 0
Регистрация: 17.10.2014
Сообщений: 39
24.10.2014, 11:52  [ТС] 13
Прошу Вашей помощи новичку в ACCESS

А как это сделать? )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2014, 11:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить максимальное значение в каждой строке матрицы
Нужно решить такую задачку, дано матрицу 7 на 8 вывести на экран максимальное значение в каждой...

Найти максимальное значение элементов в каждой строке
В матрице (9,9) найти максиммальное значение элементов в каждой строке

Вывести на экран максимальное значение в каждой строке
кто знает как прошу помочь! Дана квадратная вещественная матрица размерности n. Вывести на экран...

Получить значение ячейки, зная, что у другой ячейки в этой строке - максимальное значение
Да, может заголовок не очень, но я не знаю как лучше вкратце описать проблему. В общем, у меня...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.