我有一個表,每個點都有一個時間屬性(列「小時」),位於一個砂礫的不同方塊中(由「gridid」列標記)。通過forloop替換多個左連接
對於每個正方形,我想獲得按小時分組的點數,從而得到一個具有24列+與現有gridid相同數量的行的表格。
到目前爲止,我用24個左連接(下圖)做了這個。有簡單的循環來簡化查詢嗎?
SELECT * from (select gridid, count(id) as "00" from points where hour = 0 GROUP BY gridid ORDER BY "00" DESC)t00
left join
(select gridid, count(id) as "01" from points where hour = 1 GROUP BY gridid)t01
on t01.gridid = t00.gridid
left join
(select gridid, count(id) as "02" from points where hour = 2 GROUP BY gridid)t02
on t02.gridid = t00.gridid
...
left join
(select gridid, count(id) as "24" from points where hour = 24 GROUP BY gridid)t02
on t02.gridid = t24.gridid
感謝yoo,這可能會縮短查詢時間,但想象一下,我將不得不每年365天做類似的事情。 –
@Berlin_J:爲什麼?你的問題涉及一天中的幾小時,而不是一年中的幾天 - 今年的幾天是如何相關的? **如果**它們是相關的,請您可以更新您的問題以反映您希望**回答的問題**,而不是您問** **的問題。 –
我只是想知道我通常可以避免這些鏈條。我只提到365天的例子來強調我想在我的查詢中改進的內容。你如何看到上面,我已經有一個情況下的解決方案之前,我寫我的問題... –