我正在進行概率計算。我有一個查詢來計算事件發生的總次數。從這些事件中,我想知道一個子事件發生的次數。獲取總事件的查詢長度爲25行,我不想只複製+粘貼兩次。SQL - 在一條語句中將查詢結果用作另外兩個查詢的基礎
我想對此查詢做兩件事:計算其中的行數,並計算此查詢的查詢結果中的行數。現在,我能想到的唯一方法就是這樣(用帶有複雜查詢來替換所有行的條件替換@ total @,@條件@用條件複雜的條件@ total @中的行必須匹配子事件):
SELECT (SELECT COUNT(*) FROM (@[email protected]) AS t1 WHERE @[email protected]) AS suboccurs,
COUNT(*) AS totaloccurs FROM (@[email protected]) as t2
正如您所看到的,@ total @會重複兩次。有沒有辦法解決?有沒有更好的方式來做我想做的事情?
重新強調:@條件@取決於@ total @返回的值(它的確如t1.foo = bar
)。
一些最後的注意事項:@ total @本身需要〜250ms。這個更復雜的查詢需要〜300ms,所以postgres本身可能會進行一些優化。儘管如此,這個查詢看起來非常醜陋,@ total @直接粘貼了兩次。
輝煌!實際上它的工作速度大約慢10-20毫秒,足夠有趣......但我更關心代碼的樣子,只需要做一個小小的編輯。 – Claudiu 2009-01-14 21:18:48