SQL - 计算不同列上的重复次数

Posted

技术标签:

【中文标题】SQL - 计算不同列上的重复次数【英文标题】:SQL - count recurrence on different columns 【发布时间】:2020-09-02 12:59:24 【问题描述】:

我正在尝试查找不同列上所有值的重复总数。

例如:

有什么建议吗?谢谢

【问题讨论】:

您好,请至少包含一份您尝试解决问题的代码草稿 用您正在使用的数据库标记您的问题。 那张桌子是谁设计的?!? 标记完成。这是一个从 Excel 工作表自动生成的表格... 【参考方案1】:

您可以取消透视,然后聚合。如果您的数据库支持values() 和横向连接:

select x.name, count(*) cnt
from mytable
cross join lateral (values (name1), (name2), (name3)) as x(name)
group by x.name

更便携(虽然效率较低)的方法是union all

select name, count(*) cnt
from (
    select name1 as name from mytable
    union all select name2 from mytable
    union all select name3 from mytable
) x
group by name

【讨论】:

谢谢!第二个就像一个魅力!我正在使用 mysql,所以我认为我不能使用横向连接

以上是关于SQL - 计算不同列上的重复次数的主要内容,如果未能解决你的问题,请参考以下文章

SQL如何查询出某一列中不同值出现的次数?

计算不同单词在列中出现的次数 Oracle 12c SQL

用SQL写一个重复字符串一定次数的函数Repeat 。

用SQL计算同一个字符(汉字、字母、数字、表情、符号)连续重复出现的次数

计算 PySpark SQL Join 中每个不同值在列中出现的次数

SQL:查询重复次数最多的名字和id