sql - 选择最大不同值

标签 sql

我有一个包含电话号码(字符串)和姓名(字符串)的数据库表

同一个数字在不同行可能有不同的名字

给定一个数字,我想选择最常用的名字

例如给定以下数据,如果使用 555.1234 我应该从查询 Frank 中返回

Number   |  Name
-----------------
555.1234 |  Frank
555.1234 |  Fran
555.1234 |  James
555.1234 |  Frank
555.1233 |  Jesse

似乎我应该能够以某种方式组合 distinct 和 Max,但我无法想出正确的查询来执行此操作。有什么想法吗?

最佳答案

如果您不知道要传递给查询的电话号码是什么,则可以使用以下方法:

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

让我知道这是否适合您!

关于sql - 选择最大不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173382/

相关文章:

mysql - 如何使用MySQL统计概率并将计算值更新到原表?

mysql - SQL - 分组依据 - 具有 - 缺失行

sql - 尝试在 Access 中创建 View 给出 "Syntax error in CREATE TABLE statement"

sql - 为什么包含某些字母的 SQL 查询的某些结果丢失了?

SQLSTATE 58004,在 DB2 LUW 中的 LISTAGG 中使用 JSON_OBJECT() 中的 NULL 时出现错误 "invalid qnc assigment"

mysql - 按两条规则对一张表进行排序

sql - 完全加入 MS Access

sql - 从 PostgreSQL 表中的数组中删除 # 个字符?

sql - 搜索列中的第一个字符 PostgreSQL

mysql - := denote within the context of a placeholder 是什么意思