[SQL] выбрать прямоугольник данных
брр, написал бы какие столбцы, что в них и тп и тд.
3) зона выбора должна быть связной областью, ну или в пункте 1) 10 точек не должны содержать дыр по горизонтали (без пропуска других точек)0<x<10, y>0 — это свзяная область. Но ты видимо имеешь ввиду что-то другое.
10 км от чего нужно мерять?
не повезло с базой http://habrahabr.ru/post/43955/NSM придумали лузеры?
0<x<10, y>0 — это свзяная область. Но ты видимо имеешь ввиду что-то другое.это и имеется в виду
попробую переформулировать задачу: надо в каждой горизонтали отрезать хвост и включить первые 10 точек
иллюстрация:
Этого нет в 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
не пиши никогда *, особенно c group by
Оставить комментарий
Maurog
есть данные в одной таблице с двумя параметрами, которые можно упорядочивать. можно представить, что это координаты x, y точек на плоскости (дискретный случай): x > 0, y > 0, конечное число точекнадо выбрать точки
1) в условиях ограничения по горизонтали (не более 10 точек и\или точки, не дальше, чем 10 км)
2) без ограничений по вертикали, то есть точки во всех вертикалях необходимо захватить
3) зона выбора должна быть связной областью, ну или в пункте 1) 10 точек не должны содержать дыр по горизонтали (без пропуска других точек)
4) порядок выхлопа неважен
нужны ключевые слова для построения SQL запроса в mysql, можно наброски самого запроса
от запроса требуется простота для начала, но и не слишком тормозить. точек будет порядка 1 - 5 M, область вытянута по горизонтали, точки только добавляются (исторические данные)