mysql中的平均百分比值
我试图将计数的值除以子查询的值,然后乘以100以获得其百分比。下面的代码有效mysql中的平均百分比值,mysql,select,sum,average,Mysql,Select,Sum,Average,我试图将计数的值除以子查询的值,然后乘以100以获得其百分比。下面的代码有效 SELECT data, rota as rt, COUNT(cliente_id) / ( SELECT COUNT(DISTINCT cliente_id) FROM vw_grafico WHERE rota = rt ) * 100 ) AS porcentagem FROM vw_grafico WHERE WEEKDAY(data)+1 = rota AND YEAR(data) = 20
SELECT data, rota as rt, COUNT(cliente_id) /
(
SELECT COUNT(DISTINCT cliente_id)
FROM vw_grafico
WHERE rota = rt
) * 100 ) AS porcentagem
FROM vw_grafico
WHERE WEEKDAY(data)+1 = rota
AND YEAR(data) = 2013
GROUP BY month(data)
ORDER BY data ASC
…但是,除此之外,我需要每月的平均值,这是我的问题。。。尝试执行此操作时出现错误“组函数的使用无效”:
SELECT data, rota as rt, AVG(COUNT(cliente_id) /
(
SELECT COUNT(DISTINCT cliente_id)
FROM vw_grafico
WHERE rota = rt
) * 100 ) AS porcentagem
FROM vw_grafico
WHERE WEEKDAY(data)+1 = rota
AND YEAR(data) = 2013
GROUP BY month(data)
ORDER BY data ASC
我应该如何解决此错误
Select list fields( not aggregates) must be Subset of Group by List that in your query this is not true and your error is for that.
在您的查询中:
SELECT data, rota as rt, AVG(COUNT(cliente_id) /
(
SELECT COUNT(DISTINCT cliente_id)
FROM vw_grafico
WHERE rota = rt
) * 100 ) AS porcentagem
FROM vw_grafico
WHERE WEEKDAY(data)+1 = rota
AND YEAR(data) = 2013
GROUP BY month(data)
ORDER BY data ASC
选择列表为:
data, rota as rt
及
组别名单如下:
month(data)
选择列表字段不是组列表的子集。所有选择列表字段必须位于组列表中,例如:
SELECT month(data), rota as rt, AVG(COUNT(cliente_id) /
(
SELECT COUNT(DISTINCT cliente_id)
FROM vw_grafico
WHERE rota = rt
) * 100 ) AS porcentagem
FROM vw_grafico
WHERE WEEKDAY(data)+1 = rota
AND YEAR(data) = 2013
GROUP BY month(data), rota
ORDER BY data ASC
我不明白你说的我的意思只是语法规则而不是考试我想了想,哈哈,但我还没有成功