テーブルの各行にAVGを取得する必要があります。我々はMYSQL各行にAVGを取得
id val
1 5
2 6
3 7
を考えてみましょう私は
id val
1 0.277 (5/18)
2 0.333 (6/18)
3 0.388 (7/18)
を取得する必要があり、私は簡単に同じテーブルと結合することなく、MYSQLでこれを取得することはできますか?
テーブルの各行にAVGを取得する必要があります。我々はMYSQL各行にAVGを取得
id val
1 5
2 6
3 7
を考えてみましょう私は
id val
1 0.277 (5/18)
2 0.333 (6/18)
3 0.388 (7/18)
を取得する必要があり、私は簡単に同じテーブルと結合することなく、MYSQLでこれを取得することはできますか?
val列を合計し、その合計でval列を分割できます。
select id, 1.0*val/(select sum(val) from tablename) val
from tablename
を編集これは唯一の方法ですか?私は「同じテーブルに入らずに」する必要があることに気付きました。これは、私のデータを複雑にするための最初のクエリと私はそれを2回実行したくないためです( –
@VladimirGordienkoそれは結合ではない、素朴なアプローチでさえ、2つの別々のスキャンを行うだろう - 合計、 – nimdil
本当に、サブクエリを使ってテストを行い、MYSQLが同じクエリを2度実行しないように見えます。この解決策は私にとっては大丈夫です。 –
あなたが得ようとしているものは*平均*ではありません。 28はどこから来ますか? –
申し訳ありません - そのタイプミスです。それは18でなければならない。私は質問 –