Calculating Minkowski distance between two rows

Поиск
Список
Период
Сортировка
От Babak Alipour
Тема Calculating Minkowski distance between two rows
Дата
Msg-id CA+_of16FyVzbvfeoBohRsZSDxurHDGY-2t1zThTfV4_446bz3w@mail.gmail.com
обсуждение исходный текст
Ответы Re: Calculating Minkowski distance between two rows  (Adrian Klaver <adrian.klaver@aklaver.com>)
Список pgsql-general
Greetings everyone,

I'm a novice plpgsql user.
For an application, I'm trying to write a user-defined function that takes a row of some table (let's say with k fields) and takes another row from another table (again with k fields); then calculate the Euclidean, Manhattan or generally Minkowski distance (with some p) and then return an integer. 
I've written this:

CREATE FUNCTION euclidean_distance(row1 table_train, row2 table_test, OUT distance DOUBLE PRECISION) AS $$
DECLARE
tmp DOUBLE PRECISION;
BEGIN
FOR col IN SELECT column_name FROM information_schema.columns WHERE table_name=table_train LOOP
   tmp := (row1.col - row2.col);
   distance += tmp*tmp;
END LOOP;
distance := sqrt(distance);
END;
$$ LANGUAGE plpgsql;

Could anyone please help me fix this function so that I can pass any two rows of two tables (with same number of columns) and have their distance returned.

Best regards,
Babak Alipour

--
Babak Alipour ,
University of Florida

В списке pgsql-general по дате отправления:

Предыдущее
От: Achilleas Mantzios
Дата:
Сообщение: Re: psql color hostname prompt
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Columnar store as default for PostgreSQL 10?