我有这个查询,结果是多行,每一行都是一个事件和他各自的计数值。如何将多行中返回的所有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吗? –