Tra*_*Fry 5 mysql sql count multiple-columns
我在 SQL 中有下表
TV_Show | genre_1 | genre_2 |
a | action | sci-fi |
b | sci-fi | comedy |
c | comedy | romance |
d | action | sci-fi |
. | . | . |
. | . | . |
. | . | . |
Run Code Online (Sandbox Code Playgroud)
我想运行一个查询,该查询将计算整个表中每种不同的、独特的流派出现的次数。我想要以下结果。此输出的顺序并不重要:
action 2
sci-fi 3
comedy 2
romance 1
. .
. .
. .
Run Code Online (Sandbox Code Playgroud)
SQL 查询应该是什么?
编辑 我已经尝试运行以下命令,但它不起作用:
SELECT genre1 OR genre2, COUNT(*) FROM tv_show GROUP BY genre1 OR genre2
Run Code Online (Sandbox Code Playgroud)
编辑2
此示例是我的实际 SQL 表的简化。我的实际表还有其他包含不同数据的列。但我只有两genre列我想对其进行查询。
使用union all和聚合:
select genre, count(*)
from ((select genre_1 as genre from tv_show) union all
(select genre_2 as genre from tv_show)
) g
group by genre;
Run Code Online (Sandbox Code Playgroud)
通过简单的修改,您可以为每列添加计数:
select genre, count(*), sum(first), sum(second)
from ((select genre_1 as genre, 1 as first, 0 as second from tv_show) union all
(select genre_2 as genre, 0, 1 from tv_show)
) g
group by genre;
Run Code Online (Sandbox Code Playgroud)