【问题标题】:What is the best way to calculate mode on mysql workbench?在 mysql 工作台上计算模式的最佳方法是什么?
【发布时间】:2021-09-30 23:18:42
【问题描述】:

在工作台上,我注意到没有模式功能,我正在努力寻找一种计算方法。我见过一些例子,他们使用带有 count() 和 max() 的嵌套查询,但这似乎不起作用。这是我目前所拥有的:

SELECT max(mode_age) FROM ( 
SELECT count(age) AS mode_age 
FROM new_schema.`divvy_trips_2013` WHERE usertype = 'Subscriber' AND age <> '2013') AS s

但我最后只得到总行数。当我翻转它(计数嵌套最大值)时,我得到 1。

【问题讨论】:

  • 什么是模式函数?
  • 试图找出数据集中出现频率最高的值

标签: mysql workbench


【解决方案1】:

这是一个非常简单的示例,说明如何在 MySQL 中计算列的模式。

CREATE TABLE mode_test(value INT);

INSERT INTO mode_test VALUES (1),(2),(4),(4),(4),(5),(6),(7);

SELECT value as mode
FROM mode_test
GROUP BY value
ORDER BY count(value) DESC
LIMIT 1;

样本输出

mode
4

【讨论】:

    【解决方案2】:

    你总是需要GROUP BY age

    SELECT 
        age,
        mode_age
    FROM
        (SELECT 
            age,
            COUNT(age) AS mode_age
        FROM
            new_schema.divvy_trips_2013
        WHERE
            usertype = 'Subscriber'
            AND age <> '2013'
    GROUP BY age) AS s
    ORDER BY mode_age DESC
    LIMIT 1
    

    但更简单的是

    SELECT
        age ,
        COUNT(age) AS mode_age
    FROM
        new_schema.divvy_trips_2013
    WHERE
        usertype = 'Subscriber'
            AND age <> '2013'
    GROUP BY age
    ORDER BY mode_age DESC
    LIMIT 1
    

    【讨论】:

    • 在我看来,您的查询返回的出现次数最多,而不是出现最频繁的
    猜你喜欢
    • 1970-01-01
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多