2014-12-30 2 views
0

У меня есть проблема, чтобы показать общую сумму продаж (другими словами, суммировать цену) для всех заказов клиентов. Со следующим SQL-выражением мне удается присоединиться к таблицам «Order1», «Order2» и «Customers» для получения необходимых атрибутов, чтобы показать правильный город для клиентов, которые сделали не менее 3-х заказов, и суммировать количество заказов для этого :Как суммировать стоимость заказа

SELECT c.CityName, SUM(o2.Orderquantity) AS 'Total sales amount' 
FROM Order1 o1 
INNER JOIN 
(SELECT o1.CustomerNr 
FROM Order1 o1 
GROUP BY o1.CustomerNr 
HAVING COUNT(o1.CustomerNr) >= 3) 
AS a ON o1.CustomerNr = a.CustomerNr 
INNER JOIN Order2 o2 ON o1.Ordernr = o2.Ordernr 
INNER JOIN Customers c ON o1.CustomerNr = c.CustomerNr 
GROUP BY c.CityName 

структуры таблиц Я работаю выглядеть следующим образом:

  • 'Customers' имеет столбцы: CustomerNr, Название города
  • 'Заказ1' имеет столбцы: Ordernr, CustomerNr
  • 'Order2' имеет столбцы: Ordernr, Productnr, Or дер количество
  • «Продукты» имеет столбцы: ProductNr, Цена

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

Образец данных: Пример данных для таблицы «Клиенты»:

- CustomerNr CityName: 
- 01109  New York 
- 01999  Los Angeles 
- 08120  London 

Sample data for 'Order1': 

- Ordernr CustomerNr 
- 1306  1109 
- 1306  1109 
- 1307  1109 

Sample data for 'Order2': 

- OrderNr ProductNr Order quantity: 
- 1306  15-116  01109 3 
- 1306  46-701  01109 2 
- 1307  15-96  01109 1 
- 1308  17-91  18208 1 

(etc...) 

Sample data for 'Products': 

- ProductNr Price: 
- 15-116  44.00 
- 15-96  28.50 
- 46-701  3000.00 

etc... 

Как вы можете видеть в «Заказ1» клиент может быть связан с Serveral ordernr, и, как вы можете увидеть в разделе «Продукты» , каждый продукт имеет свой уникальный продукт с его ценой. И, как вы можете видеть в «Order2», заказчик 1109 (в данном случае) купил 7 15-115 продуктов и 1 46-708 продуктов на заказ 1306. Но этот клиент также купил 2 из 15-96 продуктов в другом порядке (1307). Этот клиент, который из Нью-Йорка, сделал 2 заказов в общей сложности, так что в этом случае результат должен выглядеть следующим образом:

CITYNAME, общая сумма продаж: Нью-Йорк, 6160,50

+0

переименовании одной и той же таблицы псевдонимов (o1) в нескольких местах очень confu петь. – jarlh

ответ

0

Вы просто должны РЕГИСТРИРУЙТЕСЬ из Продукты таблицы в запросе

Попробуйте это:

SELECT c.CityName, SUM(o2.quantity * p.Price) AS 'TotalSalesAmount' 
FROM (SELECT DISTINCT Ordernr, CustomerNr FROM Order1) AS o1 
INNER JOIN (SELECT o1.CustomerNr 
      FROM Order1 o1 
      GROUP BY o1.CustomerNr 
      HAVING COUNT(o1.CustomerNr) >= 3 
      ) AS a ON o1.CustomerNr = a.CustomerNr 
INNER JOIN Order2 o2 ON o1.Ordernr = o2.Ordernr 
INNER JOIN Customers c ON o1.CustomerNr = c.CustomerNr 
INNER JOIN Products P ON o2.ProductNr = P.ProductNr 
GROUP BY c.CityName; 
+0

С помощью этого оператора SQL я замечаю, что он только суммирует цену за уникальные номера продуктов один раз в заказах, но со значениями, которые у меня есть в моих таблицах, клиент может купить, скажем, 5 продуктов (одного уникального продукта и 2 продукта) (другого уникального продукта nr). Так что я хочу, чтобы иметь возможность суммировать общую сумму продаж для общего количества для клиента, связанного с суммарными заказами, которые они сделали. Вы знаете, как это решить? – eqinna

+0

Выборочные данные для таблицы Заказчик: CustomerNr, CityName: 01109, Нью-Йорк 01999, Лос-Анджелес 08120, Лондон Etc .. Выборочные данные для Заказ1: OrderNr, CustomerNr: 1306, 01999 1307, 01109 1308, 08120 Пример данных для продуктов: ProductNr, Цена: 15-116, 44,00 15-96, 28,50 и т.д. ... – eqinna

+0

Теперь я обновил свой первый пост с некоторыми примерами данных с желаемым результатом. – eqinna

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