我想在mysql查询中一起使用max和count聚合函数

时间:2011-11-08 11:20:36

标签: mysql

我正在使用mysql 5.0.51b。 我有一个名为xyz的表。 xyz表有一列abc,location,pqr和lmn 每次将信息发送到特定位置时,其输入都在xyz表中完成。 我想要获取最大信息发送位置的名称。

我尝试的方式: 首先,我计算使用count和group by发送到每个位置的条目数。 现在,问题是让位置的名称具有最大值。

我使用了临时解决方案: 我使用order by子句和limit来获取具有最大值的第一条记录。 但这有一个问题 如果两个位置具有相同的计数,则上述解决方案将仅提供一个位置,而另一个具有相同计数的位置将不会返回。

我想解决这个问题 任何提示都会非常有用 在期待中感谢

4 个答案:

答案 0 :(得分:3)

非常感谢所有回答我问题并且没有时间解决问题的人。

但是,我有解决方案:

SELECT count( * ) AS cnt2, location
FROM sms
GROUP BY location
HAVING cnt2 = (
SELECT count( * ) AS cnt
FROM sms
GROUP BY location
ORDER BY cnt DESC
LIMIT 1 );

http://lists.mysql.com/mysql/203074

的非常重要的提示

内部查询为您提供最大计数,外部查询将每个计数与最大计数进行比较。

答案 1 :(得分:2)

Select MAX(cnt.Total) from
(select count( Name)as Total from Gk_RegUser_answer_rel group by Reg_UserId) As cnt 

答案 2 :(得分:0)

尝试这个有趣的解决方案 -

SELECT x.* FROM xyz x
  JOIN (
    SELECT GROUP_CONCAT(location) locations FROM (
      SELECT location, COUNT(*) cnt FROM xyz GROUP BY location ORDER BY COUNT(*)) t
    GROUP BY cnt DESC
    LIMIT 1
      ) t
  ON FIND_IN_SET(x.location, t.locations);

答案 3 :(得分:0)

SELECT COUNT(*), `location` FROM `xyz` GROUP BY `location`

以上查询将为您提供特定位置的信息计数。

如果这不是您要找的,您能提供一些样本数据和预期输出吗?