SQL按一列分组,对另一列进行计数

val*_*ine 5 sql sqlite group-by count

我正在使用带有这样的表的sqlite3数据库。

|name   |action     |
-------------------------
|john   |run        |
|jim    |run        |
|john   |run        |
|john   |jump       |
|jim    |jump       |
|jim    |jump       |
|jim    |dive       |
Run Code Online (Sandbox Code Playgroud)

我想得到这样的输出

|name   |run    |jump   |dive   |
---------------------------------
|john   |2  |1  |0  |
|jim    |1  |2  |1  |
Run Code Online (Sandbox Code Playgroud)

我最接近的是这个,但我想像上面这样一行。

SELECT name, action, COUNT(name)
FROM table
GROUP BY name, action

|name   |action |COUNT(name)    |
|john   |run    |2      |
|john   |jump   |1      |
|jim    |run    |1      |
|jim    |jump   |2      |
|jim    |dive   |1      |
Run Code Online (Sandbox Code Playgroud)

另外,我还需要在查询中包含一些WHERE语句。

我是否整夜都在想这会起作用?

Mri*_*ria 1

您尝试做的事情称为交叉制表。通常,这可以作为 Excel 和其他电子表格软件中称为数据透视表的功能使用。

我找到了一篇博客文章,它将帮助您使用 SQL 来完成此操作。查看数据透视表 hack-in-sqlite3-and-mysql