# 1111 - неверное использование групповой функции ... но так ли это? - PullRequest
0 голосов
/ 19 января 2019

Я получаю # 1111 недопустимое использование функции Group для следующего запроса - но, честно говоря, я снова и снова повторял это, и ничто не показалось мне неправильным.я что-то упускаю?

Если бы запрос в возвышенной проверке нецензурного количества скобок был правильным и он тоже женился ...

SELECT CURRENT_TIME,
s.`kickoff`,
s.`home`,s.`away`,
Sum(((i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A)/(count(i.home)))*100) as averageFHGHome,
sum(((case when i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A>0.5 then 1 else 0 end)/(count(i.home)))*100) as occurFHGHome,
sum(((case when i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A>1.5 then 1 else 0 end)/(count(i.home)))*100) as occur2FHGHome,
Sum(((i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA)/(count(i.home)))*100) as averageSHGHome,
sum(((case when i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA>0.5 then 1 else 0 end)/(count(i.home)))*100) as occurSHGHome,
sum(((case when i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA>1.5 then 1 else 0 end)/(count(i.home)))*100) as occur2SHGHome,
Sum(((i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A+i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA)/(count(i.home)))*100) as averageMG,
sum(((case when i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A+i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA>0.5 then 1 else 0 end)/(count(i.home)))*100) as occur1MG,
sum(((case when i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A+i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA>1.5 then 1 else 0 end)/(count(i.home)))*100) as occur2MG,
sum(((case when i.010H+i.010A+i.1020H+i.1020A+i.2030H+i.2030A+i.3040H+i.3040A+i.4045H+i.4045A+i.4560H+i.6070H+i.7080H+i.80FTH+i.4560A+i.6070A+i.7080A+i.80FTA>2.5 then 1 else 0 end)/(count(i.home)))*100) as occur3MG
from saturday s
inner join ITACornerNew i on s.home=i.Home
group by s.home
HAVING s.kickoff > subTIME(CURRENT_TIME, '01:45:00') and s.kickoff < CURRENT_TIME
order by s.kickoff ASC

1 Ответ

0 голосов
/ 19 января 2019

В результате вашего "непристойного количества скобок" вы получили недействительный

Sum(...count(...)...)

, который будет агрегацией агрегации, в то время как вы, вероятно, ищетедля чего-то вроде

Sum(...)/count(...)

Не имеет прямого отношения к вашей текущей проблеме, но, кроме того, если s.home не является вашим первичным ключом, вы можете либо получить неверные результаты, либо сообщение об ошибке ,поскольку s.kickoff и s.away не являются частью вашего group by.И, как уже упоминалось @Strawberry, вам следует серьезно подумать о редизайне ITACornerNew.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...