-3

このクエリで何が間違っているのか、誰にもわかりますか? いろいろ試しているのですが、うまくいきません

SELECT h.guru_or_guru_user_id,
        (
            (0.25 * (s.total_pips/sr.highest_total_pips)) +
            (0.2 * (s.total_gain/sr.highest_total_gain)) +
            (0.15 * (sr.lowest_volatility/s.volatility)) +
            (0.05 * (s.running_weeks/sr.most_running_weeks)) +
            (0.15 * (s.total_trades/sr.most_total_trades)) +
            (0.2 * (s.average_profit_loss_ratio/sr.highest_average_profit_loss_ratio))
        ) AS guru_score
from gt_view_mt_stats as s 
inner join gt_history as h
    on s.login = h.login
    and h.is_guru_history = 1
left join gt_view_stats_records as sr
group by h.guru_or_guru_user_id
order by guru_score desc 

ここに画像の説明を入力

4

3 に答える 3

1

簡単な構文チェックでは、次のエラーが発生します。

group(15,1) expected token:ON JOIN

15 行目は で始まり、GROUP BYその直前の行ですが、結合LEFT JOINの条件がないONため、「expected token: ON」というエラーが発生します。

ON次の条件を含めるようにクエリを更新する必要がありますLEFT JOIN

...
left join gt_view_stats_records as sr
    ON sr.some_key = other_key
group by h.guru_or_guru_user_id
于 2013-07-30T13:07:22.517 に答える
1

次の行を置き換えます。

left join gt_view_stats_records as sr

を削除しleft joinて、通常どおり追加します。

.....
 and h.is_guru_history = 1,
 gt_view_stats_records as sr
....
于 2013-07-30T13:16:35.040 に答える
0

guru_or_guru_user_id を除くすべてのフィールドは group by 句ではなく、集計関数でカプセル化されていないため、MySql は最初の値を取得します。必要な結果は実際の結果とは異なる場合があります。

したがって、LEFT OUTER JOIN を使用すると、SR フィールドが NULL になる可能性があるため、この管理されていない値によって式が破損する可能性があります。

LEFT OUTER JOIN の後、句 ON はどこにありますか?

于 2013-07-30T13:07:05.370 に答える