有人看到这个查询有什么问题吗? 我一直在尝试很多不同的事情,我无法做到正确
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
答案 0 :(得分:1)
快速语法检查会出现以下错误:
group(15,1) expected token:ON JOIN
第15行是以GROUP BY
开头的行,紧接在LEFT JOIN
之前的行,但是您没有ON
条件用于连接 - 因此错误“预期令牌:ON“。
您必须更新查询以包含ON
的{{1}}条件:
LEFT JOIN
答案 1 :(得分:1)
替换此行:
left join gt_view_stats_records as sr
删除left join
并将其添加为正常:
.....
and h.is_guru_history = 1,
gt_view_stats_records as sr
....
答案 2 :(得分:0)
除guru_or_guru_user_id之外的所有字段都不在group by子句中,并且没有封装在聚合函数中,因此MySql获取第一个值,您想要的结果可能与实际结果不同。
因此,您使用LEFT OUTER JOIN,因此SR字段可能为NULL,因此您的表达式可能会被此非托管值损坏。
在LEFT OUTER JOIN之后,其中的子句是ON?