mysql语句有什么问题
这是我的陈述,我想做的是得到每个用户每个订单的平均数量,遇到问题,不知道如何解决, 谢谢你的帮助mysql语句有什么问题,mysql,sequelpro,Mysql,Sequelpro,这是我的陈述,我想做的是得到每个用户每个订单的平均数量,遇到问题,不知道如何解决, 谢谢你的帮助 SELECT usuarios.email, AVG(pedidos_onlines.total), CASE WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total) <34873 then 'A' WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total
SELECT usuarios.email, AVG(pedidos_onlines.total),
CASE WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total) <34873 then 'A'
WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total) >= 52309 then 'B'
ELSE 'C'
end as SegmentColombia,
CASE WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) >= 62 then 'B'
ELSE 'C'
end as SegementPeru
CASE WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) <13 then 'A'
WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) >= 19 then 'B'
ELSE 'C'
end as SEGMENT Ecudador
FROM pedidos_onlines
LEFT JOIN usuarios ON usuarios.id = pedidos_onlines.usuario_id
LEFT JOIN ciudades as c on c.id = pedidos_onlines.ciudad_id
LEFT JOIN paises as p on p.id = c.pais_id
WHERE usuarios.email IS NOT NULL
GROUP BY usuarios.email, p.nombre
选择usuarios.email,平均值(pedidos_onlines.total),
当p.nombre如“%columbia%”和平均值(pedidos_onlines.total)=52309时,则为“B”
其他'C'
结束于哥伦比亚,
当p.nombre如“%peru%”和平均值(pedidos_online.total)=62时,则为“B”
其他'C'
以SegementPeru结束
当p.nombre如“%peru%”和平均值(pedidos_online.total)=19时,则为“B”
其他'C'
作为段Ecudador结束
来自pedidos_在线
在usuarios.id=pedidos\u onlines.usuario\u id上左加入usuarios
在c.id=pedidos\U onlines.ciudad\U id上以c的形式左键连接ciudades
作为p.id=c.pais\u id上的p的左连接对
其中usuarios.email不为空
按usuarios.email分组,p.nombre
错误消息:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 当p.nombre类似于“%ecuador%”和
平均值(pedidos_onlines.total)您在第二个案例的末尾漏掉了一个逗号:
CASE WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) >= 62 then 'B'
ELSE 'C'
end as SegementPeru
需要
`SEGMENT Ecudador`
或者您可以删除空间。它应该离您需要的地方不远
SELECT u.email, AVG(po.total),
CASE WHEN p.nombre like '%colombia%' and AVG(po.total) <34873 then 'A'
WHEN p.nombre like '%colombia%' and AVG(po.total) >= 52309 then 'B'
ELSE 'C'
end as SegmentColombia,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 62 then 'B'
ELSE 'C'
end as SegementPeru,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <13 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 19 then 'B'
ELSE 'C'
end as `SEGMENT Ecudador`
FROM pedidos_onlines as po
LEFT JOIN usuarios as u ON u.id = po.usuario_id
LEFT JOIN ciudades as c on c.id = po.ciudad_id
LEFT JOIN paises as p on p.id = c.pais_id
WHERE u.email IS NOT NULL
GROUP BY u.email, p.nombre,
CASE WHEN p.nombre like '%colombia%' and AVG(po.total) <34873 then 'A'
WHEN p.nombre like '%colombia%' and AVG(po.total) >= 52309 then 'B'
ELSE 'C'
end,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 62 then 'B'
ELSE 'C'
end,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <13 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 19 then 'B'
ELSE 'C'
end
选择u.email,平均(采购订单总数),
当p.nombre如“%colombia%”和平均(采购订单总额)=52309时,则为“B”
其他'C'
结束于哥伦比亚,
当p.nombre如“%peru%”和平均(po.total)=62时,则为“B”
其他'C'
以SegementPeru结尾,
当p.nombre如“%peru%”和平均值(po.total)=19时,则为“B”
其他'C'
以`段Ecudador结尾`
来自pedidos_在线作为po
在u.id=po.usuario\u id上以u的形式左连接usuarios
在c.id=po.ciudad\u id上以c的形式左连接ciudades
作为p.id=c.pais\u id上的p的左连接对
其中u.email不为空
通过u.email分组,p.nombre,
当p.nombre如“%colombia%”和平均(采购订单总额)=52309时,则为“B”
其他'C'
完,,
当p.nombre如“%peru%”和平均(po.total)=62时,则为“B”
其他'C'
完,,
当p.nombre如“%peru%”和平均值(po.total)=19时,则为“B”
其他'C'
结束
我不知道,但我猜你知道。你收到错误信息了吗?如果是的话,把它放在问题中。结果不是你所期望的吗?如果是这样的话,把你得到的和你想要的都放在问题中。这是我收到的最新错误消息,你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解当p.nombre如“%ecuador%”和AVG(pedidos_onlines.total)时可使用的正确语法。非常感谢,但是现在我收到此错误消息您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“Ecudador,FROM pedidos_onlines LEFT JOIN usuarios ON usuarios.id=pedidos_onlin”附近使用的正确语法。第13行有一个空格:“SEGMENT Ecudador”,它认为您的字段有别名,然后使用逗号,而不是“field‘space’field”。如果需要一个空格,你可以在两个名字周围放一个`符号。或者你可以把空间移走。我希望这会有帮助。如果有,请确保根据网站的浏览将其标记为最佳答案:。
`SEGMENT Ecudador`
SELECT u.email, AVG(po.total),
CASE WHEN p.nombre like '%colombia%' and AVG(po.total) <34873 then 'A'
WHEN p.nombre like '%colombia%' and AVG(po.total) >= 52309 then 'B'
ELSE 'C'
end as SegmentColombia,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 62 then 'B'
ELSE 'C'
end as SegementPeru,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <13 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 19 then 'B'
ELSE 'C'
end as `SEGMENT Ecudador`
FROM pedidos_onlines as po
LEFT JOIN usuarios as u ON u.id = po.usuario_id
LEFT JOIN ciudades as c on c.id = po.ciudad_id
LEFT JOIN paises as p on p.id = c.pais_id
WHERE u.email IS NOT NULL
GROUP BY u.email, p.nombre,
CASE WHEN p.nombre like '%colombia%' and AVG(po.total) <34873 then 'A'
WHEN p.nombre like '%colombia%' and AVG(po.total) >= 52309 then 'B'
ELSE 'C'
end,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <41 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 62 then 'B'
ELSE 'C'
end,
CASE WHEN p.nombre like '%peru%' and AVG(po.total) <13 then 'A'
WHEN p.nombre like '%peru%' and AVG(po.total) >= 19 then 'B'
ELSE 'C'
end