考慮下面的圖像參照不同的列在PostgreSQL中列
如果你想獲得一個包含所有步驟獲得非標記邊的長度的結果行,你可以做以下:
SELECT
5 AS a, --side 1, triangle 1
7 AS b, --side 2, triangle 1
(5*5) AS a2, --a^2
(7*7) AS b2, --b^2
(5*5)+(7*7) AS c2, --a^2 * b^2 = c^2
SQRT((5*5)+(7*7)) AS c, --√c2 = c
19 AS d, --side 1, triangle 2
24 AS e, --side 2 triangle 2
(19*19) AS d2, --d^2
(24*24) AS e2, --e^2
(19*19)+(24*24) AS f2, --d^2 * e^2 = f^2
SQRT((19*19)+(24*24)) AS f, --√f2 = f
(5*5)+(7*7)+(19*19)+(24*24) AS g2, --c^2 * f^2 = g^2
SQRT((5*5)+(7*7)+(19*19)+(24*24)) AS g --√g2 = g
但是,這是非常醜陋的。我想使用列替換,如:
SELECT
5 AS a, --side 1, triangle 1
7 AS b, --side 2, triangle 1
(a*a) AS a2, --a^2
(b*b) AS b2, --b^2
a2+b2 AS c2, --a^2 * b^2 = c^2
SQRT(c2) AS c, --√c2 = c
19 AS d, --side 1, triangle 2
24 AS e, --side 2 triangle 2
(d*d) AS d2, --d^2
(e*e) AS e2, --e^2
d+e AS f2, --d^2 * e^2 = f^2
SQRT(f2) AS f, --√f2 = f
c2+f2 AS g2, --c^2 * f^2 = g^2
SQRT(g2) AS g --√g2 = g
有沒有簡單的方法來做到這一點?
PS請不要解釋這是如何使用SQL的一個荒謬的,我知道這!這只是我能減少我的問題而被理解的最簡單的方法。在我的場景中,使用來自許多連接表的變量進行更復雜的計算,結果需要插入具有非常嚴格結構的彙總表中。目前,我將結果帶到Node進行計算並插入數據,但這非常慢,特別是因爲我要通過網絡訪問數據庫服務器。
我打算測試一下,看看它是否適用於我的複雜用例。如果是這樣,我會接受,如果沒有,我會跟進問題。謝謝! – trex005
@ trex005:簡化您的問題,使得簡化問題的答案不適用於您的實際問題通常不是一個好主意。我可能把這個計算放到一個PL/pgSQL函數中,你只需要通過4個輸入變量 –
我當然明白,然而,提問者可能並不總是理解回答者要去的方向,因此可能不會預料到不兼容性直到他們看到了答案。 就我而言,問題在於我的連接和計算有多複雜,但是我通過將每個表達式堆疊得更像這樣簡化了方法:http://pastebin.com/7ZUbJVBG 它看起來可能更復雜,但在數百行的查詢中更容易跟蹤。 – trex005