Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней / 25 сообщений из 59, страница 1 из 3
05.05.2014, 02:57
    #38632684
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Здравствуйте! Необходимо определить максимальную суммарную продажу за каждые 5 подряд идущих дней (т.е сумма 1-5 день, 2-6 и т.д). Помогите, пожалуйста. Заранее благодарю
...
Рейтинг: 0 / 0
05.05.2014, 08:29
    #38632751
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammalira,

Загоняем значения в стек, вычисляем максимум и запоминаем его положение в стеке. Каждое новое значение контролируем на макс и переназначаем его, если так. Когда значение, соответствующее текущему макс выдавливается из стека, снова пересчитываем стек на макс и т.д.. Код м.б. по-разному оптимизирован в зависимости от характера поступающих данных.

А какие у тебя соображения?

В архиве accdb
...
Рейтинг: 0 / 0
05.05.2014, 08:40
    #38632758
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Mina Anna Mazzini,

Если честно, я очень плохо разбираюсь в SQL, поэтому не совсем понимаю как можно реализовать данную задачу. Находила тему, где подсчитывалась максимальная сумма за каждые 2 дня, но так и не смогла переделать. =(
...
Рейтинг: 0 / 0
05.05.2014, 09:23
    #38632794
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammalira, я с SQL тоже "на Вы" и мой алгоритм чисто вычислительный. Но, мне будет очень интересно посмотреть на решение задачи скользящего макса через запрос :)

авторНаходила тему, где подсчитывалась максимальная сумма за каждые 2 дня, но так и не смогла переделать. =(
За два дня не интересно и не показательно - слишком уж частный случай. Но, ты бы найденную ссылку хоть дала - вдруг кто решится тебе помочь, так пригадится... Впрочем, так скорее всего просто обращение идет к предыдущему значению...
...
Рейтинг: 0 / 0
05.05.2014, 09:43
    #38632807
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Mina Anna Mazzini,

Прилагаю ссылки, может действительно будет проще оттолкнуться от этого.
http://www.sql.ru/forum/1025558/nuzhno-poschitat-maksimalnuu-summu-podryad-idushhih-periodov
http://www.cyberforum.ru/ms-access/thread881096.html

Сейчас еще сяду и буду пытаться самостоятельно разобраться, но вчера за полдня у меня так ничего и не получилось =(
...
Рейтинг: 0 / 0
05.05.2014, 10:30
    #38632854
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammalira,

по моему qwerty112 всё очень доступно изложил, для вашего примера это будет выглядеть так

Код: vbnet
1.
2.
3.
SELECT top 24 Задание.Наименование, Задание.Дата as [начальная дата], Задание_4.дата AS [конечная дата], (Задание.продажа+Задание_1.продажа+Задание_2.продажа+Задание_3.продажа+Задание_4.продажа) AS [сумма продаж]
FROM (((Задание left  JOIN Задание AS Задание_1 ON Задание.дата = Задание_1.дата-1) left  JOIN Задание AS Задание_2 ON Задание.дата = Задание_2.дата-2) left  JOIN Задание AS Задание_3 ON Задание.дата = Задание_3.дата-3) left  JOIN Задание AS Задание_4 ON Задание.дата = Задание_4.дата-4
order by Задание.Дата



где 24 - это число записей в вашей табличке минус 4
...
Рейтинг: 0 / 0
05.05.2014, 10:45
    #38632874
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
guest_rusimport,

Спасибо огромное, просто преогромнейшее! Подскажите, а как сделать так, чтоб выводились в итоге не все суммы а только одна, максимальная?

Чувствую себя полным нубом. Спасибо Вам за помощь!
...
Рейтинг: 0 / 0
05.05.2014, 11:21
    #38632936
Mina Anna Mazzini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
guest_rusimport, я правильно понимаю из этого запроса, что в общем случае вначале надо подсчитать кол-во записей в таблице, а сам запрос формировать каждый раз заново согласно заданному периоду скользящего?

Он, вообще, взлетит, на, скажем, 1 мио записей и периоде, допустим, 189? Да и сама строка запроса, вроде, не резиновая...
...
Рейтинг: 0 / 0
05.05.2014, 11:33
    #38632960
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammalira,
авторПодскажите, а как сделать так, чтоб выводились в итоге не все суммы а только одна, максимальная?


здесь не понял, разъясните

Mina Anna Mazzini ,

этот запрос можно формировать динамически (через VBA, подсчитывая там значение для TOP)... ограничения на длину текста запроса , конечно, присутствуют, и их надо учитывать
...
Рейтинг: 0 / 0
05.05.2014, 11:44
    #38632976
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
guest_rusimport,

Нужно сначала посчитать все суммы, но сделать так, чтобы итоге из этих сумм выводилась только одна, наибольшая из них. Это возможно реализовать в одном запросе? Или необходимо будет делать два разных: сначала на подсчет сумм, а потом на определение максимального числа?
...
Рейтинг: 0 / 0
05.05.2014, 11:56
    #38633002
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammaliraguest_rusimport,

Нужно сначала посчитать все суммы, но сделать так, чтобы итоге из этих сумм выводилась только одна, наибольшая из них. Это возможно реализовать в одном запросе? Или необходимо будет делать два разных: сначала на подсчет сумм, а потом на определение максимального числа?

Код: vbnet
1.
2.
3.
SELECT TOP 1 Задание.Наименование, Задание.Дата AS [начальная дата], Задание_4.дата AS [конечная дата], (Задание.продажа+Задание_1.продажа+Задание_2.продажа+Задание_3.продажа+Задание_4.продажа) AS [сумма продаж]
FROM (((Задание LEFT JOIN Задание AS Задание_1 ON Задание.дата = Задание_1.дата-1) LEFT JOIN Задание AS Задание_2 ON Задание.дата = Задание_2.дата-2) LEFT JOIN Задание AS Задание_3 ON Задание.дата = Задание_3.дата-3) LEFT JOIN Задание AS Задание_4 ON Задание.дата = Задание_4.дата-4
ORDER BY 4 desc;
...
Рейтинг: 0 / 0
05.05.2014, 12:01
    #38633012
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
guest_rusimport,

Просто огромнейшее Вам спасибо! Это именно то, что мне было нужно. Вы меня буквально спасли) Спасибо!
...
Рейтинг: 0 / 0
05.05.2014, 14:58
    #38633316
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Еще такой вариант
Код: sql
1.
2.
3.
4.
5.
SELECT TOP 1 T1.Дата AS Дата_начала, T1.Дата +4 AS Дата_окончания, Sum(T2.Продажа) AS Сумма
FROM Задание AS T1 INNER JOIN Задание AS T2 ON (T2.Дата Between T1.Дата AND T1.Дата +4)
GROUP BY T1.Дата
HAVING Count(*)=5
ORDER BY 3 DESC
...
Рейтинг: 0 / 0
06.05.2014, 09:15
    #38634089
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Опоздавший,

Красиво! А чего стесняетесь под постоянным ником публиковать? Не понятно ж -скромность или ,наоборот, высокомерие? Темны и не понятны бывают "закоулки" души человеческой, самих себя иногда не узнаем и боимся:)
...
Рейтинг: 0 / 0
06.05.2014, 11:31
    #38634286
Quiet333
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
guest_rusimportОпоздавший,

Красиво! А чего стесняетесь под постоянным ником публиковать? Не понятно ж -скромность или ,наоборот, высокомерие? Темны и не понятны бывают "закоулки" души человеческой, самих себя иногда не узнаем и боимся:)

"Сам такой!"
...
Рейтинг: 0 / 0
06.05.2014, 12:41
    #38634423
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Quiet333,

не безгрешен, каюсь :)
...
Рейтинг: 0 / 0
14.05.2014, 12:41
    #38640818
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Еще раз спасибо всем за помощь! Я понимаю, что этот форум посвящен SQL, но может все-таки кто-нибудь сможет помочь реализовать эту же задачу, но только при помощи конструктора запросов? Или хотя бы намекнет как это можно было бы сделать.
...
Рейтинг: 0 / 0
14.05.2014, 13:14
    #38640889
П-Л
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Конструктор запросов - малопригодный инструмент. В реальных задачах неизбежно приходится писать нормальный скл код нормальным способом. Один из аргументов за АДП, где запросы пишутся по-человечески со всеми сервисными функциями.
...
Рейтинг: 0 / 0
14.05.2014, 13:33
    #38640917
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
П-Л,

Это я понимаю, но задача, как выяснилось, состоит в том, чтоб сделать именно через конструктор.
...
Рейтинг: 0 / 0
15.05.2014, 11:29
    #38641965
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Ammalira... задача, как выяснилось, состоит в том, чтоб сделать именно через конструктор.
Если выложенный мною запрос записать несколько по иному
Код: sql
1.
2.
3.
4.
5.
6.
SELECT TOP 1 T1.Дата AS Дата_начала, T1.Дата +4 AS Дата_окончания, Sum(T2.Продажа) AS Сумма
FROM Задание AS T1, Задание AS T2
WHERE T2.Дата Between T1.Дата AND T1.Дата +4
GROUP BY T1.Дата
HAVING Count(*)=5
ORDER BY 3 DESC


то он будет представим а режиме конструктора.
...
Рейтинг: 0 / 0
15.05.2014, 14:48
    #38642304
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Опоздавший,

Не могу сообразить как даты выразить через конструктор. Нельзя создавать отдельный запрос для каждой группы из 5 дат, необходимо собрать это все вместе каким-то образом.
...
Рейтинг: 0 / 0
15.05.2014, 18:23
    #38642683
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
AmmaliraНе могу сообразить как даты выразить через конструктор.
Не понял. Но на всякий случай: слово Дата - это имя поля в таблице Задание.
AmmaliraНельзя создавать отдельный запрос для каждой группы из 5 дат, необходимо собрать это все вместе каким-то образом.
Данный запрос является решением задачи
AmmaliraНеобходимо определить максимальную суммарную продажу за каждые 5 подряд идущих дней (т.е сумма 1-5 день, 2-6 и т.д).
Если же возникло желание посмотреть суммарные продажи по всем группам из 5 подряд идущих дней, то уберите в запросе предикат Top 1 , который в совокупности с заданной сортировкой позволяет найти (и показать) группу с максимальным значением суммы продаж.
...
Рейтинг: 0 / 0
15.05.2014, 18:47
    #38642708
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Опоздавший,

Смотрите, цель состоит в том, чтобы посчитать максимальную сумму, используя конструктор запросов, а не SQL код. Я пробовала сделать таким образом:
1. Первый запрос на создание таблицы, с интервалом дат с 1 по 5.
2. Второй запрос на добавление строки в таблицу с интервалом со 2 по 6.
3. Еще 22 запроса на добавление, учитывая все последующие интервалы.
4. Последний запрос на выборку, на выведение максимальной суммы.

Мне сказали, что это слишком громоздко и что необходимо придумать решение, которое могло бы использоваться и в большем временном интервале, например, за квартал или за год. Не создавать же в таком случае 1000 запросов. Решение есть, но я никак не могу уловить как выразить все эти даты через один запрос.
...
Рейтинг: 0 / 0
15.05.2014, 19:27
    #38642731
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
AmmaliraСмотрите, цель состоит в том, чтобы посчитать максимальную сумму, используя конструктор запросов
Так оговорено о последнем запросе
Опоздавший... он будет представим а режиме конструктора
Подробная инструкция
. Копируете мой последний запрос в буфер обмена.
2. Создаете новый запрос, отказываясь от добавления таблиц.
3. Переходите в режим SQL и вставляете скопированный запрос.
4. Переходите в режим конструктора.
5. Изучаете.
...
Рейтинг: 0 / 0
15.05.2014, 20:21
    #38642757
Ammalira
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней
Опоздавший,

Изучать то изучаю, но меня смущают две таблицы Т1 и Т2, которых как бы не существует и которые берутся в качестве имен таблиц в конструкторе.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Необходимо вычислить максимальную суммарную продажу за несколько подряд идущих дней / 25 сообщений из 59, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]