2017-01-10 4 views
0

У меня есть система заказов, относящаяся к области сетки. Мой первый расчет дает число клиентов в квадрате сетки 50 х 50 (разбитый на площади 10 х 10):Умножение счета в диапазоне SQL по стоимости за единицу

SELECT 
    10 * (customer_x/10), 
    10 * (customer_y/10), 
    COUNT (*) 
FROM t_customer 
GROUP BY 
    customer_x/10, 
    customer_y/10 
ORDER BY 3 DESC; 

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

t_customer: (где customer_x и customer_y являются 2 цифра координаты)

customer_id, customer_x, customer_y

t_order: 

order_id, order_total, order_datetime, customer_id 

Я уверен, что я должен сделайте внутреннее соединение, но я не уверен, как реализовать это в квадрат квадрата сетки, и может ли быть включен вышеупомянутый запрос. Я использую sqlite3, и любая помощь будет высоко оценена.

ответ

1

В принципе, вам просто нужно присоединиться к таблице заказов и использовать ее для агрегации. Это довольно простая модификация для вашего первоначального запроса:

SELECT 10 * (c.customer_x/10), 10 * (c.customer_y/10), 
     COUNT(*) as num_orders, 
     SUM(o.order_total) 
FROM t_customer c JOIN 
    t_orders o 
    ON c.customer_id = o.customer_id 
GROUP BY c.customer_x/10, c.customer_y/10 
ORDER BY SUM(o.order_total) DESC 
LIMIT 1; 
+0

Это отлично работает, спасибо большое за помощь. Просто ломаю голову над логикой. –

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