Size: a a a

DBA - русскоговорящее сообщество

2016 May 12

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
ну да, я это в вопросе предлагал. там в одну сторону только получится.
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
придется мастерить гору костылей..
источник

DK

Dmitry Kremer in DBA - русскоговорящее сообщество
Я бы смотрел в сторону analitic/window functions. Например cume_dist() постгресовый
источник

DK

Dmitry Kremer in DBA - русскоговорящее сообщество
источник

DK

Dmitry Kremer in DBA - русскоговорящее сообщество
источник

SK

Stas K in DBA - русскоговорящее сообщество
git commit suicide (андергравий)
народ, у меня тут вопрос. сильно не бить, я в бд не очень.
мне нужно выбрать из таблицы n записей, значение числового поля field которых находятся ближе всех к числу N.
я конечно понимаю, что можно сделать select * from table where field > N order by field и срезать уже в коде программы нужное кол-во результатов. но во-первых, это ресурсоемко, т.к. вытаскиваются все записи с field > N, а во-вторых, это работает только в одну сторону, а мне надо и > и <.
есть встроенные решения?
Limit?
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
Stas K
Limit?
уже говорил, он решает первую проблему, но не вторую
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
Dmitry Kremer
Я бы смотрел в сторону analitic/window functions. Например cume_dist() постгресовый
спасибо, почитаем
источник

SK

Stas K in DBA - русскоговорящее сообщество
Вообще это называется k nearest neighbours, можно в постгресе, смотрите в стоторону типо данных точка или куб
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
вау. вот спасибо. если действительно можно, это просто замечательно.
источник

SK

Stas K in DBA - русскоговорящее сообщество
но это очень сильный перебор для скаляра, просто два запроса с лимитом
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
не, у меня все не так просто на самом деле.
источник

SK

Stas K in DBA - русскоговорящее сообщество
SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
источник

SK

Stas K in DBA - русскоговорящее сообщество
можете в point первую координату константой оставить, а во вторую значение
источник

SK

Stas K in DBA - русскоговорящее сообщество
тогда даст честных 10 ближайших
источник

SK

Stas K in DBA - русскоговорящее сообщество
Еще есть такая штука для многомерных данных: http://www.postgresql.org/docs/devel/static/cube.html
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
Stas K
SELECT * FROM places ORDER BY location <-> point '(101,456)' LIMIT 10;
да, у меня как раз локации, но по двум осям. это как-то сложнее
источник

SK

Stas K in DBA - русскоговорящее сообщество
две координаты у точки? расстояние по тереме пифагора?
источник

g(

git commit suicide (андергравий) in DBA - русскоговорящее сообщество
блин, вот об этом что-то не подумал
источник

SK

Stas K in DBA - русскоговорящее сообщество
a <-> b  float8  Euclidean distance between a and b.
a <#> b  float8  Taxicab (L-1 metric) distance between a and b.
a <=> b  float8  Chebyshev (L-inf metric) distance between a and b.
источник