我有這個查詢,結果是多行,每一行都是一個事件和他各自的計數值。如何將多行中返回的所有COUNT加入單行(POSTGRESQL)
SELECT u.name, l.event, COUNT (l.event)
FROM log AS l LEFT JOIN user AS u ON u.id = l.userid
GROUP BY u.name, l.event
結果是這樣的:
------------------------------------------
| user | event | count |
------------------------------------------
| user_1 | event_1 | 12 |
| user_1 | event_2 | 6 |
| user_1 | event_3 | 9 |
| user_2 | event_1 | 16 |
| ... | ... | ... |
的問題是,我需要在一個單一的結果行,其中每一行代表一個單獨的用戶,這些數作爲參數(列),像這樣:
--------------------------------------------------------------
| user | event_1 | event_2 | event_3 |
--------------------------------------------------------------
| user_1 | 12 | 6 | 9 |
| user_2 | 16 | 0 | 13 |
| ... | ... | ... | ... |
也許我可以做一個選擇查詢?用某種函數做循環或類似的東西?
謝謝!
編輯1:我不知道這個事件,他們寫的代碼
編輯2:我看到有一個簡單的SQL查詢來做到這一點非同小可的方式,所以我使用Python與大熊貓做這個。參加How to convert a column of string to numerical?
您可以使用PIVOT。我有類似的問題。在e.event領域的PIVOT。然而,在我爲你編寫代碼之前,需要重新學習我的語法。 –
搜索交叉表。這個查詢的使用者是誰?輸出json是讓它完全動態的簡單方法。可以輸出json嗎? –