-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 行是以 a 开头GROUP BY和紧接其前的行LEFT JOIN,但您没有ON连接条件 - 因此出现错误“预期令牌: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 之后,子句在哪里?

于 2013-07-30T13:07:05.370 回答