【发布时间】:2021-10-09 10:12:18
【问题描述】:
我有一张如下所示的表格:
category name1 name2 name3 name4 name5
1 John Sam John Katy Cat
1 John Ivan Bob Andrew Tom
1 Sam Ivan George Bob Tom
2 Jack Siri Elsa Noah Anna
2 Jack Bob Tomas Noah Tom
我需要做的是在每个类别的每个列中找到最常见的值。也就是说,我需要以下结果:
category name1 name2 name3 name4 name5
1 John Ivan John Katy Tom
2 Jack Siri Elsa Noah Anna
如果有多个具有相同频率的值,则可以选择其中任何一个。
到目前为止,我只用这个脚本为一栏做到了这一点:
SELECT top(1) category, name1, COUNT(name1) AS freq
FROM data
GROUP BY category, name1
ORDER BY freq DESC
但是我该如何对 SQL Server 中的多个列执行此操作?
【问题讨论】:
-
So far, I have only found the code to do that with one column。为什么不复制其他列的代码 -
显示你为 1 列所做的代码
-
根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
-
category2, name2 : Siri 和 Bob 同样流行,那你为什么选择 Siri?
-
@Adamszsz 将代码添加到问题中
标签: sql sql-server tsql window-functions