我在这里创建了一个示例表: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
2
和 3
是最常出现的响应。
最佳答案
您应该仅按您想要获取其频率的列进行分组。
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/