语法错误:排名前5位的组结果其他

时间:2013-04-17 16:24:35

标签: mysql group-by max

所以我不知道我是否违反任何规则,但我对以前未得到答复的问题感到非常沮丧:

Group by Count of (Top 5) & Count of (All Other)

我需要的是修复以下synatx错误的一些帮助(从尝试运行下面的代码,作为解决方案提供给我):

“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'@rank:= 0附近使用正确的语法     哪里         deskcases.Labels不喜欢''     AND deskcases.Labels不喜欢'第14行“

我最初提供解决方案的人都没有回复。我想这需要2分钟才能为那些技术熟练的人找到简单的解决方案,但是唉......接着是无线电静音。任何帮助将不胜感激! :)

谢谢!

    SELECT

IF(rank = 6, "Other", sub.Labels)AS Label,
 SUM(sub.CaseCount)AS ResolvedCases
FROM
    (
        SELECT

        IF(@Rank < 6 ,@Rank := @Rank + 1, @Rank)AS Rank,
        deskcases.Labels,
        COUNT(deskcases.Labels)AS CaseCount
    FROM
        deskcases,
        (SELECT @rank := 0)AS IgnoreAlias
    WHERE
        deskcases.Labels NOT LIKE ''
    AND deskcases.Labels NOT LIKE '%SPAM%'
    AND deskcases.Labels NOT LIKE '%Online Orders%'
    AND deskcases.`Case Status` LIKE 'Resolved'
    AND deskcases.`Created At` > CURDATE()- INTERVAL 30 DAY
    GROUP BY
        deskcases.Labels
    ORDER BY
        CaseCount DESC
    )sub
GROUP BY
    sub.rank ASC

2 个答案:

答案 0 :(得分:1)

我从来没有像你一样完成过连接,但如果你只是用逗号分隔表,它应该可以工作。此外,任何子查询都应该分配一个别名,即使从未使用过......

from
   deskcases,
   ( select @rank := 0) as IgnoreAlias
where ...

答案 1 :(得分:0)

很难猜到你的意图,但你似乎想要加入一个不合法的表达式。

查看http://dev.mysql.com/doc/refman/5.0/en/join.html(或您的MySQL版本的等效文件) - 您将看到需要加入表格或表格因素。