mysql - sql 中最常出现的值

标签 mysql sql group-by

我在这里创建了一个示例表:https://dbfiddle.uk/wUvTIsyN

我正在尝试使用分组依据查询最常出现的值。这是我的尝试:

select pid, propName, Address, City, Response, count(Response) as cr
from Prop
group by 
        pid,
        propName,
        Address,
        City,
        Response
order by
      cr
limit 1;

预期输出:

pid propName    Address City    Response

1   p1  addr1   c1  2
2   p2  addr2   c2  3

23 是最常出现的响应。

最佳答案

您应该仅按您想要获取其频率的列进行分组。

SELECT response, COUNT(*) AS cr
FROM Prop
GROUP BY response
ORDER BY cr DESC
LIMIT 1

您不应在 SELECT 列表中包含其他列,因为对于具有相同响应的行,它们是不同的。

如果您想查看具有该响应的行,可以使用此子查询连接表。

SELECT p.*, c.cr
FROM Prop AS p
JOIN (
    SELECT response, COUNT(*) AS cr
    FROM Prop
    GROUP BY response
    ORDER BY cr DESC
    LIMIT 1
) AS c ON p.response = c.response

关于mysql - sql 中最常出现的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73980960/

相关文章:

mysql - 如何使用 mysql 查询合并具有相同值和总值的行?

c# - 分组时如何从 Linq 查询返回 IGrouping

c# - 使用 LINQ 减去表中的列

mysql - MyISAM不是InnoDB的替代品吗?

mysql - 将 CONCAT 增量添加到 varchar(128)

php - 在 CakePHP 中更新没有表单数据的数据库

mysql - 如何选择包含多个标签的id?

jquery - 如何在新闻源中加载更多帖子而不加载之前加载的帖子?

php - 我的域上出现空白屏幕并自动下载 Zip

mysql - 从表格中获取所选日期每个月的结果集