2017-01-17 13 views
0

Следуя за this question, у меня есть еще один запрос, который мне нужно, чтобы вычесть значение 10 из всех отрицательных чисел в данных. К сожалению, я просто не уверен, как реализовать тот же подзапрос, как в предыдущем вопросе.Добавление подзапроса в запрос сетки

Запрос на вопрос

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_order 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; 

, который вычисляет суммы заказа из каждого квадрата сетки.

ответ

1

Ваш первоначальный запрос не сильно изменится в запросе ниже. Единственное отличие является новым объединение и еще один член добавил в SELECT список:

SELECT 10 * (c.customer_x/10) AS col1, 
     10 * (c.customer_y/10) AS col2, 
     COUNT(*) AS num_orders, 
     SUM(o.order_total) AS order_total_sum 
FROM 
(
    SELECT customer_id, 
      CASE WHEN customer_x < 0 THEN customer_x - 10 ELSE customer_x END AS customer_x, 
      CASE WHEN customer_y < 0 THEN customer_y - 10 ELSE customer_y END AS customer_y 
    FROM t_customer 
) c 
INNER JOIN t_order 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 

Обратите внимание, что вы могли решить эту проблему без использования подзапроса, который я использовал. Тем не менее, подзапрос делает его более читабельным и позволяет быстро вычислить скорректированные значения и customer_y.

+0

Я получаю ошибку 'Ошибка: нет такой колонки: t.customer_x'? –

+1

@DaveC Перезагрузите страницу, я изменил псевдонимы в соответствии с тем, что вы использовали в своем вопросе выше. –

+1

Отлично. Я думаю, что это была линия СУМ, которая меня смутила. Я все время помещал его в неправильное место. –

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

  • Нет связанных вопросов^_^