Mysql case表达式中的错误及圆函数中除法运算符的使用

Mysql case表达式中的错误及圆函数中除法运算符的使用,mysql,sql,Mysql,Sql,如果一个聊天被评为4级或5级,那么它就是一个好的聊天。聊天的等级可以是1/2/3/4/5。然而,我提交的代码在case语句的使用中出现了错误 1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 近“情况下,cs.chat_评级为4,5时,GR评级为1,2,3,4,5时,TR评级为 在第4行cs.ag'处结束 此外,我认为我对圆函数和除法运算符的使用可能是错误的。我需要找到好的评分与总评分的比率 SELECT Distinct(cm.channel_nam

如果一个聊天被评为4级或5级,那么它就是一个好的聊天。聊天的等级可以是1/2/3/4/5。然而,我提交的代码在case语句的使用中出现了错误


1064-您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 近“情况下,cs.chat_评级为4,5时,GR评级为1,2,3,4,5时,TR评级为 在第4行cs.ag'处结束

此外,我认为我对圆函数和除法运算符的使用可能是错误的。我需要找到好的评分与总评分的比率

SELECT Distinct(cm.channel_name), round(GR DIV TR) FROM channel_company AS cc
    LEFT JOIN chat_sessions 
    LEFT JOIN channel_master
    case cs.chat_rating
    when (4,5) then GR 
    when (1,2,3,4,5) then TR end
    WHERE cs.agent_assigned_time >= " "
    AND cs.agent_assigned_time <= " "
    group by 1
您遗漏了CASE位置和WHEN条件中的一些。您必须指出cc IN的正确表别名,因为您遗漏了它
希望这有助于

在整个选定行上选择不同的作品,而不仅仅是第一列。即SELECT Distinctcm.channel\U name、RONDGR DIV TR与SELECT Distinct cm.channel\U name、RONDGR DIV TR相同,也与SELECT Distinct cm.channel\U name、RONDGR DIV TR等相同。这是一个大小写表达式,不是case语句……像您这样将左连接的右侧表的条件放在WHERE子句中,使左连接的行为与常规的内部连接一样。将这些条件移动到ON子句以获得真正的左连接结果。别名是什么cc@SubinCPoonamgode它正用于channel_company1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用接近“case cs.chat_rating in 1 in 4,5然后“GR”当1 in 1,2,3,4,5然后在channel_company作为cc的第2roundGR DIV TR行使用“TR”e的正确语法,->您的意思是我将良好评级除以从案例陈述中获得的总评级,然后使用round语句对结果进行四舍五入。channel_company是具有通过其他2个join语句连接的公共列的表。GR div TR。。两个角色都是对的?你在数GR和TR的数量吗?请解释一下?请给我解释一下?
SELECT cm.channel_name,
(SUM(case 
    when cs.chat_rating IN (4,5) then 1 ELSE 0 END) / SUM(case when cs.chat_rating IS NOT NULL then 1 ELSE 0 END)) AS ratio_rating 
    FROM
    channel_company as cc 
    LEFT JOIN chat_sessions AS cs ON cs.company_id = cc.company_id
    LEFT JOIN channel_master AS cm ON cc.channel_id = cm.id
    WHERE cs.agent_assigned_time >= '2015-10-28 06:30:00'
    AND cs.agent_assigned_time <= '2015-10-29 02:30:00'
    group by cm.channel_name