21.

MySQLにおける中央値(Median)の導き方(バージョン8未満)

ページの作成
テンプレートを更新

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!

MySQLのバージョン8未満はMedian関数が存在しないので、以下のように自己結合を用いて中央値を導き出す必要がある。

SELECT
    AVG(target_val)
FROM
    (
        SELECT
            t1.target_val
        FROM
            test_table t1,
            test_table t2
        GROUP BY
            t1.target_val
        HAVING SUM(
            CASE
                WHEN t2.target_val >= t1.target_val THEN 1
                ELSE 0
            END
        ) >= COUNT(*) / 2
    AND SUM(
            CASE
                WHEN t2.target_val <= t1.target_val THEN 1
                ELSE 0
            END
        ) >= COUNT(*) / 2
    )
;

※「達人に学ぶSQL徹底指南書」を参考

 

考え方は、上位半分 + 1レコードと下位半分 + 1コードをそれぞれ取得して、それぞれに共通する中央の2レコードを足して2で割る。
奇数の場合は共通する中央のレコードが1レコードのみになるのでAVGする必要はない(してもよい)。
 

子ページ
子ページはありません
同階層のページ
  1. ダウンロード&インストール方法(Windows)
  2. インストール方法(Linux)
  3. コマンド一覧
  4. SQL
  5. データ型
  6. 関数
  7. 管理ツール
  8. 設定
  9. パフォーマンスチューニング関連
  10. エクスポートおよびインポート
  11. エラー&トラブル
  12. 文字コードの確認
  13. 実行中のSQLの状態確認およびプロセスキルの方法
  14. パスワードの無効化設定
  15. rootユーザーの初期パスワード確認方法
  16. rootユーザーのパスワード変更方法
  17. limit, offsetの始まりと挙動
  18. mysqlのバージョン確認方法
  19. 実行計画の表示方法
  20. レプリケーションのステータス確認方法
  21. 中央値の導き方(バージョン8未満)
  22. 階層SQL(バージョン8未満)
  23. パーセンタイルの導き方
  24. 特定スキーマの全テーブルの全カラム情報を取得する方法
  25. MySQLで文字列の置換をする方法

最近の質問

コメント一覧

コメントがありません

ログインしなければコメント投稿はできません。