2015-01-23 3 views
0

У меня есть две таблицы связанных данных.Объединение агрегированных запросов

  • Таблица 1 - Все Торговая История брокером
  • Таблица 2 - Все торговые Breaks (торговые операции, которые имели ошибки/различия/вопросы)

Я создал запрос, чтобы Всего количество сделок по Брокер из таблицы 1

Я создал запрос к общей сумме количества «Перерывы» Брокер из таблицы 2

затем я создал запрос, чтобы объединить два предыдущие Запросы и производят некоторые статистические данные

Пример:

Broker  Total Trades  Total Breaks  Break % 
Goldman   10     4    40% 
Morgan   10     2    20% 

Вместо того, чтобы создать 3 запросов - есть способ создать 1 запрос, который достигает тот же результат? Я хочу выполнить более подробный анализ/отчеты, не заливая базу данных множеством индивидуальных запросов. SQL-кода Ниже

Первый запрос:

SELECT DISTINCTROW [All Breaks].Broker, Sum([All Breaks].TradeCount) AS 
[Sum Of TradeCount] 
FROM [All Breaks] 
GROUP BY [All Breaks].Broker; 

Второй запрос:

SELECT DISTINCTROW [All Trades].Broker, Sum([All Trades].TradeCount) AS 
SumOfTradeCount 
FROM [All Trades] 
GROUP BY [All Trades].Broker; 

конец Результат: Объединение

SELECT [Broker List].Broker, [All Breaks Query].[Sum Of TradeCount], [All 
Trades Query].SumOfTradeCount, [Sum Of TradeCount]/[SumOfTradeCount] AS 
Percentage 
FROM ([Broker List] INNER JOIN [All Breaks Query] ON [Broker List].Broker 
= [All Breaks Query].Broker) INNER JOIN [All Trades Query] ON [Broker 
List].Broker = [All Trades Query].Broker; 

Большое спасибо!

+0

Если честно - некоторые из способов, я вокруг проблем можно перемещаться, как это (потому что доступ не столь мощный, как некоторые из новых RDMS), должен был положить их результаты запроса во временных таблицах. Затем вы можете использовать результирующие наборы как данные таблицы и не должны ограничиваться любыми ограничениями доступа SQL (которые вы можете или не можете запускать) –

+0

Не пытаясь реплицировать, я бы сказал, что ваша работа выглядит очень хорошо. Анализ SQL основан на стекировании или вложенности, и иногда кажется, что вы «наводнены», но объединение в меньшее количество объектов часто дорого стоит вам на способности поддерживать код. – Smandoli

+1

Почему вы используете DistinctRow? Спасибо. – NoChance

ответ

0

В дизайне запроса есть способ переключиться на SQL View, где вы можете свободно писать sql.

select one, two from (select one, joinfield from table1) as first Inner join (select two, joinfield from table2) as second ON first.joinfield = second.joinfield.

Также см Combining two MS Access queries

Смежные вопросы