MySQL で中央値を計算する簡単な方法
P粉720716934
P粉720716934 2023-08-29 11:47:07
0
2
634

MySQL を使用して中央値を計算する最も簡単な (遅すぎないことが望ましい) 方法は何ですか? AVG(x) を使用して平均値を求めていますが、中央値を計算する簡単な方法を見つけるのに苦労しています。現在、すべての行を PHP に返し、ソートしてから中央の行を選択していますが、これを 1 つの MySQL クエリで行う簡単な方法が必要です。

データ例:

id | val -------- 1 4 2 7 3 2 4 2 5 9 6 8 7 3

val をソートすると、2 2 3 4 7 8 9 が得られるため、中央値は 4 になるはずです。 ;SELECT AVG(val)== 5

P粉720716934
P粉720716934

全員に返信 (2)
P粉041881924

コメントで、オンラインで別の答えを見つけました: 一>

列に適切なインデックスが付けられ、そのインデックスがフィルタリングと並べ替えに使用されていることを確認してください。説明プランで検証します。

リーリー

「中央値」行番号を計算します。

median_row = Floor(count / 2)を使用するとよいでしょう。

次に、リストからそれを選択します:

リーリー

これにより、必要な値を含む行が返されるはずです。

いいねを押す+0
    P粉041758700

    MariaDB/MySQL の場合:

    リーリー

    Steve Cohenさんは、最初のパスの後、@rownum に合計行数が含まれることを指摘しました。これを使用して中央値を決定できるため、2 回目のパスや連結は必要ありません。

    さらに、レコード数が偶数の場合に中央値を正しく生成するために、AVG(dd.val)およびdd.row_number IN(...)が使用されます。推論:

    リーリー

    最後に、MariaDB 10.3.3 には MEDIAN 関数が含まれています

    いいねを押す+0
      最新のダウンロード
      詳細>
      ウェブエフェクト
      公式サイト
      サイト素材
      フロントエンドテンプレート
      私たちについて 免責事項 Sitemap
      PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!