我有一个数据库表,其中包含电话号码(字符串)和名称(字符串)
相同的号码在不同的行中可能有不同的名称
给定一定数量我想选择最常用的名称
例如,如果使用555.1234给出以下数据,我应该从查询Frank
返回Number | Name
-----------------
555.1234 | Frank
555.1234 | Fran
555.1234 | James
555.1234 | Frank
555.1233 | Jesse
似乎我应该能够以某种方式将distinct和Max结合起来,但是我无法想出正确的查询来执行此操作。有什么想法吗?
答案 0 :(得分:3)
如果您不知道将哪个电话号码传递给查询,那么您可以使用以下内容:
SELECT Number, Name, COUNT(Name) AS NameCount
FROM test
GROUP BY Number, Name
HAVING NameCount > 1
Order BY NameCount DESC
LIMIT 1
这将通过一个名称为您提供最常用的电话号码,并返回电话,姓名和计数。
以下是我用来尝试查询的test
表及其值:
Number | Name
555.1234 | Frank
555.1234 | Fran
555.1234 | James
555.1234 | Frank
555.1234 | Jesse
555.2234 | Frank
555.1234 | Jesse
555.1234 | Frank
请告诉我这是否适合您!
答案 1 :(得分:1)
如果我理解了这个问题,你有一个特定的数字作为输入,那么这可能会起作用,具体取决于你使用的数据库。 Capsule的评论让我意识到可能不是这种情况。 编辑根据杰克的好评,更改为计数(*)(我认为)更清晰。
select Top 1 Name, Count(*) total
from phone where number = '555.1234'
group by name
order by total desc