2013-05-03 2 views
0

Я пытаюсь разделить значение счета на значение подзапроса и умножить на 100, чтобы получить его процент. Этот код ниже работает ...Среднее значение процента в mysql

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 

Что мне делать, чтобы разрешить эту ошибку?

ответ

0
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) 

что выбрать список полей не подмножество Список групп. все выберите поля списка должны быть в списке группы для examplme:

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 
+0

я не понял, что вы сказали – heavyrick

+0

спасибо за ответ, но вернулся и ту же ошибку ... – heavyrick

+0

мои средства только синтаксические законы и не exat запросов – mojtaba

Смежные вопросы