sql >> データベース >  >> Database Tools >> phpMyAdmin

列のモーダル平均を取得するためのMySQLクエリ?

    生のカウントを取得するには

    select window_height, count(*) totalusers
    from tbl
    group by window_height
    order by totalusers desc  # or by window_height
    

    モーダル平均を取得するには(最大数の同点がある場合、これは複数の値を表示します)

    select window_height, totalusers
    from (
        select @r := if(totalusers>@r,totalusers,@r) maxcount, window_height, totalusers
        from (select @r:=0) initvars, (
            select window_height, count(*) totalusers
            from tbl
            group by window_height
        ) X ) Y
    where totalusers = @r
    

    これは、集約されたサブクエリを通過するときに最大カウントを格納するために変数を使用するMySQLのトリックを使用します。操作の概要

    • O(n):テーブルを1回スキャンし、カウントを作成します(T1)
    • O(n):派生テーブルT1をスキャンし、変数@r(T2)で最大カウントを維持します
    • O(n):派生テーブルT2をスキャンし、カウントが最も高い高さのみをフィルタリングします



    1. phpスクリプトを表示しているphpmyadmin

    2. DBeaver Twitter

    3. MySQLの日付列に現在の日付が自動的に入力されます

    4. WordpressデータベースをサーバーSQLエラーに移行しています