0

したがって、1 列と 100 万行のデータがあります。行 1 ~ 100、次に 2 ~ 101、3 ~ 102、そして 100 万行までの最大値を計算する必要があります。結果は、この列の隣の空の列に書き込まれます。したがって、行 1 ~ 100 の最大数は、行 1、列 2 になります。行 2 ~ 101 の最大数は、行 2、列 2 に書き込まれます。

私は、この種のことを行うのが非常に簡単なエクセルから来ています。しかし、私がしなければならないことの量は、Excelには多すぎます。この種のものにはmysqlが適していると言われました。まったく調査を行っていないように思われる場合は申し訳ありませんが、現在はそれに埋もれていますが、複数の概念をまとめて自分のものを理解するのにまだ苦労しているので、ポインタを歓迎します. 残念ながら、これは私が必要とする/やりたいことのほんの一部です。

4

1 に答える 1

1

MySQL はスプレッドシートではないため、スプレッドシートのように使用しないでください。アルゴリズムを完全に再考し、データベースで機能するように適応させる必要があります。

この状況では、列を追加して行の順序を定義する必要があります。データ モデルを変更すると、クエリは次のようになります (残念ながら、分析関数がサポートされていないため、MySQL では機能しません)。

SELECT MAX(col) OVER (
    ORDER BY id
    ROWS BETWEEN CURRENT ROW AND 99 FOLLOWING
) AS running_maximum
FROM table1

idただし、最初にテーブルに列を追加する必要があります。それがなければ、行には明確に定義された順序がなく、行「1-100」について話すことは意味がありません。これは、(Excel とは異なり) MySQL の行には、列を追加しない限り行番号が関連付けられていないためです。目的。

于 2012-06-19T23:36:26.080 に答える