2017-01-10 3 views
0

У меня есть список клиентов с координатой x и y для каждого между -50 и 50 для каждого. Мне нужно рассчитать количество клиентов в каждом квадрате сетки 10x10, но не знаю, как я могу группировать клиентов по диапазону в два столбца. Таблица Customer имеет столбец customerID, customer_x и customer_y. Я сумел получить результат для одного столбца с использованиемSQL Grid Ranges

SELECT 10 * (customer_x/10) AS start_range, 10 * (customer_x/10) + 9 AS end_range, count(*) AS COUNT FROM t_customer GROUP BY customer_x/10

Я нашел этот here, но не могу работать, как получить эту работу с размерным диапазоном 2. Я начал писать случай для каждого квадрата сетки, используя Select * from customer where (customer_x, customer_y) between (-50,-50) and (-50,-40) и так далее, но всего 100, и я предполагаю, что есть более эффективный способ? Я использую SQLite3. Любая помощь могла бы быть полезна.

Я забыл добавить, на самом деле нужно показать квадрат сетки с наибольшим количеством клиентов, так что может быть гораздо более простой способ сделать это?

ответ

0
GROUP BY customer_x/10, customer_y/10 
+0

Я просто попытался 'ВЫБРАТЬ 10 ​​* (customer_x/10) start_range, 10 * (customer_x/10) + 9 AS end_range, COUNT (*) AS COUNT ОТ t_customer GROUP BY customer_x/10, customer_y/10', но он все еще не дает требуемого ответа. –

+1

SELECT customer_x/10, customer_y/10, COUNT (*) FROM t_customer GROUP BY customer_x/10, customer_y/10 –

+0

Спасибо @ dmitry-kurbsky, похоже, что он работает, но я изменил его на 'SELECT 10 * (customer_x/10), 10 * (customer_y/10), COUNT (*) FROM t_customer GROUP BY customer_x/10, customer_y/10; 'так, чтобы поддерживались диапазоны координат. Как я могу упорядочить новый столбец частоты? –