我在 PHPMyAdmin 中有一个包含六列的表。 每个单元格都有一个名字。
现在我想知道每列中每个名字出现的频率。
例如:
column1 column2 column3
name1 name3 name2
name1 name2 name2
name2 name3 name1
然后我需要一个列表:
column1 column2 column3
name1 - 2 0 1
name2 - 1 1 2
name3 - 0 2 0
我尝试玩:
SELECT Count(*) FROM aanmeldingen2013 WHERE column1 LIKE name1.
有人可以帮助我使用 SQL 代码来生成此输出吗?
最佳答案
我认为这是最有效的方法:
select name,
sum(n = 1) as Column1Cnt,
sum(n = 2) as Column1Cnt,
sum(n = 3) as Column1Cnt
from (select (case when n.n = 1 then column1
when n.n = 2 then column2
when n.n = 3 then column3
end) as name,
n.n
from t cross join
(select 1 as n union all select 2 union all select 3) n
) t
这应该比union all
查询更有效,因为它只扫描原始表一次。我在此处展示了三列的示例(如示例数据中所示)。应该清楚如何将其概括为六列。
关于mysql,查找表中的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081557/