С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
1

Запрос на разницу значений при отсутствии нескольких показателей в одном из значений

14.05.2015, 20:58. Показов 959. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!

Прошу прощения за возможно глупый вопрос, но для меня это действительно проблема(

В моей базе есть таблица с данными, которая содержит объемы продаж (Tons) и деньги (NSV, LSV) по разным регионам и есть также такой тип региона, как Россия (данные равны сумме всех регионов). В таблице есть также еще другие регионы (другие страны), но они не участвуют в проблеме. Очень много столбцов с разными показателями.
Один из регионов решено убрать. Его данные я могу просто удалить из данной таблицы, но данные по России необходимо пересчитать: вычесть объемы по этому региону.
Причем совпадение данных должно быть по нескольким полям: месяц, год, item продукта, и еще пару (А, В).

Проблема в том, что в этой конкретной таблице items и еще некоторые поля (возможно все вышеперечисленные) точно есть в данных Россия, но могут не быть в данных по этому убираемому региону (то есть таких строк просто нет).

Я пыталась решать так:
1) Query1 на выборку данных по убираемому региону по всем полям
2) Query2 на выборку данных по России по всем полям (все аналогично Query1)
3) Query3
SQL
1
2
3
SELECT SUM([Query2]![Tons]-[Query1]![Tons]) AS Tons, SUM([Query2]![LSV]-[Query1]![LSV]) AS LSV, SUM([Query2]![NSV]-[Query1]![NSV]) AS NSV
FROM Query2
LEFT JOIN Query1 ON (Query2.[А] = Query1.[А]) AND (Query2.[item] = Query1.[item]) AND (Query2.месяц = Query1.месяц) AND (Query2.год = Query1.год) AND (Query2.[В] = Query1.[В]);
...но он выдает ерунду (завышенные данные). Возможно дело во FROM? И точно дело в отсутствующих значениях по убираемому региону.

Может быть, можно решить как-то легче (одним запросом), желательно несложным?
Я с SQL дружу пока не очень, делала запросы через конструктор.

Была бы очень благодарна за советы и помощь!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2015, 20:58
Ответы с готовыми решениями:

Запрос на разницу значений
Есть три таблицы: Поступление товара, Товар и Выбытие товара. Помогите составить запрос на...

Запрос на выборку нескольких последних значений
Добрый день, есть таблица в которой хранятся несколько значений с tagid 4,7,9,5. То есть значений...

Как проверить, заполнены ли все необходимые поля формы и при отсутствии значений вывести сообщение?
Здравствуйте! У меня на форме есть несколько <input> и несколько <checkbox>. Как проверить,...

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

8
Эксперт MS Access
2833 / 1375 / 215
Регистрация: 13.05.2011
Сообщений: 4,217
14.05.2015, 21:19 2
Gie3ella, лучше всего покажите вашу базу и скажите какой регион убираете. На яву будет яснее.
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
14.05.2015, 22:01  [ТС] 3
Вячеслав, с удовольствием. Просто база рабочая, очень большая.
Постаралась оставить по-минимуму показателей. Все должны быть учтены при вычислении разницы.

Реальная рабочая проблема такова:
Regions = Hyperglobus и Selgros перемещаются из Group Geo =NationalAccounts в Group Geo =Russia.
Соответственно Region = NationalAccounts содержит сумму всех данных по Regions объединенных по Group Geo =NationalAccounts (не спрашивайте, зачем так, по имеющимся данным и их источникам по-другому сделать не получалось )
Нужно из всех данных (Tons, NSV, LSV) по Regions =NationalAccounts вычесть данные Regions =Hyperglobus и Selgros

Запросы оставлять не стала, так как они явно были кривыми...

Гузель.
Вложения
Тип файла: 7z 1.7z (4.95 Мб, 6 просмотров)
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
14.05.2015, 22:15  [ТС] 4
Вдогонку к предыдущему сообщению: может быть можно сделать просто один запрос на изменение текущей таблицы? Было бы удобнее всего. Но если нет то нет)
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 00:00 5
Цитата Сообщение от Gie3ella Посмотреть сообщение
может быть можно сделать просто один запрос на изменение текущей таблицы? Было бы удобнее всего.
Такой запрос выполняет это пожелание
SQL
1
2
UPDATE MainDatabase SET [GROUP Geo]="Russia"
WHERE Region IN ("Hyperglobus", "Selgros") AND [GROUP Geo]="NationalAccounts"
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
15.05.2015, 00:23  [ТС] 6
Спасибо! Но этот запрос вроде как выполняет только самую легкую часть задания - перенести клиентов из одного в другое. Самое сложное - вычесть из данных Regions =NationalAccounts Regions =Hyperglobus и Selgros
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 00:46 7
Цитата Сообщение от Gie3ella Посмотреть сообщение
Самое сложное - вычесть из данных Regions =NationalAccounts Regions =Hyperglobus и Selgros
А что значит "вычесть"? Как делается "вычитание"? Приведите пример "вычитания" хотя бы на одной записи.
0
0 / 0 / 0
Регистрация: 14.05.2015
Сообщений: 5
15.05.2015, 02:16  [ТС] 8
Пожалуйста)
В приложенном рисунке видно, что я выбрала одинаковые записи например для Region=NationalAccount и Hyperglobus
И данные NationalAccount включают в себя в том числе Hyperglobus.
Нужно, чтобы новое значение NationalAccount = старое минус Hyperglobus и минус Selgros.
Для некоторых (многих) записей NationalAccount не будет соответствующих строчек по Hyperglobus и Selgros.

С другой стороны я подумала, что легче наверное сделать обратную операцию.
Hyperglobus и Selgros перенести в Russia. то есть исключить из NationalAccount так, как вы предложили.
А данные по оставшимся в NationalAccount клиентам суммировать по одинаковым записям (группировка?) и назвать NationalAccount. И эти новые значения NationalAccount вставить в таблицу вместо старых.

С уважением
Гузель.
Миниатюры
Запрос на разницу значений при отсутствии нескольких показателей в одном из значений  
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
15.05.2015, 08:25 9
Опять мало что понял. Из каких полей и что надо вычитать? Куда вставлять? Почему это надо делать?
Напрашивается только один вывод - какие-то поля, скажем Tons, LSV или NSV сделаны расчетными, вычисляются каким-то образом и опять заносятся в таблицу. Если так, то это неверный шаг. Хранить надо исходные данные. Все остальное запросами.

Впрочем, при большом количестве данных (как у Вас), результаты запросов бывает хранят в таблицах, поскольку долго вычислять каждый раз. Но это должно быть очень прозрачно. С полным текстовым описанием всех деталей. А сейчас мало что понятно. Или я такой тупой. Может кто другой Вам поможет.
0
15.05.2015, 08:25
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2015, 08:25
Помогаю со студенческими работами здесь

Ajax запрос для нескольких значений параметра
Ребят, сейчас данная форма выводит результат расчета параметров доставки. А как вывести на странице...

Возврат нескольких значений из метода не знаем сколько таких значений
Здравствуйте! Собственно вопрос: как возвращать <несколько> значений из метода если заранее...

Сумма значений при нескольких условиях
задача - определить количество подсбора, производимого в день. даны 3 таблицы: 1) подсбор и...

Сумма значений при нескольких условиях
Добрый день! Не могу разобраться, вроде должна работать СУММЕСЛИМН, но она не работает..... ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru