8

さて、私はユーザーテーブルを持っていて、最高のポイントをスコアで割ったユーザーの最大値を取得したいと考えています。以下は、私が探しているものの大まかなアイデアです。

SELECT MAX(SUM(points)/SUM(score)) FROM users

両方の列を合計して分割することには興味がありません。むしろ、各ユーザーのポイントとスコアを分割し、ロットから最高値を取得することに興味があります。

4

3 に答える 3

4

おそらく、サブクエリでこれを行うことができます:

Select max(points_over_Score)
from 
    (Select points/score AS points_over_score
    from users);

そして、コメントで言及されているように、おそらく次のように短縮できます

SELECT MAX(points/score) FROM users;

あなたがやろうとしていることの説明を書いても、あなたの例がSUMその中にある理由が明確にならないので、私はそれを使用しませんでした.

また、このようなコードに関する質問は、 stackoverflow.comにより適しています。自分の質問にフラグを立てて、モデレーターに移行を依頼できます。

于 2012-06-25T14:22:32.233 に答える
0

すべてのポイントを合計し、次にすべてのスコアを合計してから2つを除算する必要がある場合、FrustratedWithFormsDesignerの回答は機能しません。その答えは、各ポイントをスコアで割ってから、最高の答えを返します。

これは機能するはずです:

SELECT MAX(sum_points / sum_score) from 
(SELECT SUM(points) as sum_points, SUM(score) as sum_score FROM users)

ところで、これは「異常な」パーセンテージを返します。あなたはおそらくスコアをポイントで割ったいと思うでしょう。たとえば、100点満点中70点、つまり70%を獲得した場合、スコア(70)/ポイント(100)になります。

于 2012-06-25T16:44:36.057 に答える
0

これがこの投稿の古さによるものなのか、当時の MySQL のバージョンによるものなのかはわかりませんが、上記の解決策を試したところ、次のエラーがスローされました。

エラー 1248 (42000) : すべての派生テーブルには独自のエイリアスが必要です

以下を使用してこれを解決できました。

SELECT MAX(sum_points / sum_score) from (SELECT SUM(points) as sum_points, SUM(score) as sum_score FROM users) as max_value;

于 2018-04-23T20:03:47.293 に答える