[SQL] выбрать прямоугольник данных
брр, написал бы какие столбцы, что в них и тп и тд.
Я перестал понимать отсюда:
3) зона выбора должна быть связной областью, ну или в пункте 1) 10 точек не должны содержать дыр по горизонтали (без пропуска других точек)0<x<10, y>0 — это свзяная область. Но ты видимо имеешь ввиду что-то другое.
не повезло с базой http://habrahabr.ru/post/43955/
Я запутался уже на 1)
10 км от чего нужно мерять?
10 км от чего нужно мерять?
не повезло с базой http://habrahabr.ru/post/43955/NSM придумали лузеры?

0<x<10, y>0 — это свзяная область. Но ты видимо имеешь ввиду что-то другое.это и имеется в виду
попробую переформулировать задачу: надо в каждой горизонтали отрезать хвост и включить первые 10 точек
иллюстрация:

row_number over (partition by y order by x)
Этого нет в mysql, но способов эмуляции много - поищи и выбери оптимальный для себя
Этого нет в mysql, но способов эмуляции много - поищи и выбери оптимальный для себя
Этого нет в mysql, но способов эмуляции многосудя по http://explainextended.com/2009/03/08/analytic-functions-sum... лучше не эмулировать, себе дороже выйдет

способов действительно много можно придумать. Посмотри другие, может приемлимы будут. В конце концов можно каждый раз выбирать минимальный х из тех, что еще не в наборе - гарантированный результат за 10 проходов
кстати, нагуглилось
отсюда
SELECT p1.*
FROM Points p1
LEFT OUTER JOIN Points p2
ON (p1.y = p2.y AND p1.x < p2.x)
GROUP BY p1.x
HAVING COUNT(*) < 10;
отсюда
ну, вариантов так сделать действительно много, я поэтому и посоветовал поискать самому и выбирать оптимальный для тебя, потому что оптимальность может зависеть много от чего. Объем данных, индексы и тд
Upd и это, не пиши никогда * c group by
Upd и это, не пиши никогда * c group by
не пиши никогда *, особенно c group by
Оставить комментарий
Maurog
есть данные в одной таблице с двумя параметрами, которые можно упорядочивать. можно представить, что это координаты x, y точек на плоскости (дискретный случай): x > 0, y > 0, конечное число точекнадо выбрать точки
1) в условиях ограничения по горизонтали (не более 10 точек и\или точки, не дальше, чем 10 км)
2) без ограничений по вертикали, то есть точки во всех вертикалях необходимо захватить
3) зона выбора должна быть связной областью, ну или в пункте 1) 10 точек не должны содержать дыр по горизонтали (без пропуска других точек)
4) порядок выхлопа неважен
нужны ключевые слова для построения SQL запроса в mysql, можно наброски самого запроса
от запроса требуется простота для начала, но и не слишком тормозить. точек будет порядка 1 - 5 M, область вытянута по горизонтали, точки только добавляются (исторические данные)