公式查询用于从数据库中选择所有表

时间:2014-03-11 11:03:08

标签: sql postgresql

我的数据取自PostGreSQL的两个表格 这是一个表

wv1           rv1
341.6         2.48
343.6         2.58
344.7         2.37
346.3         2.32
347.9         2.29
349.5         2.36
351.1         2.23
352.6         2.24
354.2         2.25
355.8         2.29
357.4         2.28
358.9         2.23

另一张表

wv2        rv2
341.6      8.24
343.1      8.17
344.7      8.19
346.3      8.13
347.9      8.14
349.5      8.09
351.1      8.09
352.6      8.13
354.2      8.21
355.8      8.24
357.4      8.27
358.9      8.29

我正在使用数据rv1和rv2 公式是**

  • I = ACOS [rv1.rv2 / | rv1 |。| rv2 |]

** 那是  **

  • I = Acos [((2.38 * 8.24)+(2.58 * 8.17)+(2.37 * 8.19)+ .....)/ sqrt((2.38 * 2.38)+(2.58 * 2.58)+(2.37 * 2.37)+ ....)* SQRT((8.24 * 8.24)+(8.17 * 8.17)+(8.19 * 8.19)+ ....)]

** PostGreSQL查询这个是

select
    acos(sum(t1.rv1 * t2.rv2) / (
        sqrt(sum(power(t1.rv1, 2))) * sqrt(sum(power(t2.rv2, 2)))
    )) as i
from
    t1
    inner join
    t2 on t1.wv1 = t2.wv2

在此查询中,我想比较数据库中的所有表而不是table2(t2)

SELECT table_name FROM information_schema.tables where table_schema='public' and table_type='BASE TABLE' ORDER BY table_name ASC;";

最终输出

   Ivalue
   0.3559772512926 
   0.52684312

我想在PostGreSQL查询中编写公式,如何编写,请指导我......

1 个答案:

答案 0 :(得分:0)

select
    acos(sum(t1.rv1 * t2.rv2) / (
        sqrt(sum(power(t1.rv1, 2))) * sqrt(sum(power(t2.rv2, 2)))
    )) as i
from
    t1
    inner join
    t2 on t1.wv1 = t2.wv2

wv1wv2必须unique才能使其正常工作