【问题标题】:How to get the highest number of distinct values如何获得最大数量的不同值
【发布时间】:2014-04-23 15:56:26
【问题描述】:

我试图在数据库中找到最大数量的不同值。我到目前为止的代码是:

$highestStats = 0;
$highest = $bdd->query('SELECT count(DISTINCT month) FROM stats')->fetchColumn();
while($highestData = $highest) {
    if ($highestStats < $highestData['month']) {
        $highestStats = $highestData['month'];
    }
}
echo $highestStats;

此代码不起作用。

我的例子是这样的:数据库中有一个月份列表,例如 2 月被列出 4 次,3 月 9 次和 4 月 7 次。基本上我希望$highestStats 重新调整9。即最常用的月份出现的次数。

我该怎么做呢,$bdd 是一个PDO MySQL 连接。

非常感谢任何帮助。

干杯 吉姆

【问题讨论】:

  • 过去,他们有这个 ORDER BY 运算符

标签: php mysql count distinct


【解决方案1】:

认为您可以使用子查询来执行此操作:-

SELECT MAX(month_occurs)
FROM
(
    SELECT `month`, COUNT(*) AS month_occurs
    FROM stats 
    GROUP BY `month`
) Sub1

或者避免子查询但是使用 order by /limit

SELECT `month`, COUNT(*) AS month_occurs
FROM stats 
GROUP BY `month`
ORDER BY month_occurs DESC
LIMIT 1

【讨论】:

  • 第一个使用子查询的方法可以解决问题,尽管我似乎无法让第二个示例工作。感谢您的帮助和解决方案。
【解决方案2】:

试试这个:

select c,month from (SELECT count(month) as c,month from states group by month)temp order by c desc limit 1;

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 1970-01-01
    • 2014-01-17
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多