При выполнении агрегированного запроса каждый неагрегированный столбец должен появляться в предложении GROUP BY
. У вас есть два UNION
ed подзапроса: и только у первого есть неагрегированные столбцы (а именно, location
и home_team
), однако вы случайно поместили предложение GROUP BY
во второй, так как кажется, чтобы вычислить итоги, вероятно, не нужно. Вы можете просто поместить предложение GROUP BY
в первый запрос вместо второго:
select
location,
home_team_name,
count(case when extract(year from match_date)='2018' and extract(month from match_date)=1 then 1 end) january_2018,
count(case when extract(year from match_date)='2018' and extract(month from match_date)=2 then 1 end) february_2018,
count(case when extract(year from match_date)='2018' and extract(month from match_date)=3 then 1 end) march_2018,
count(case when extract(year from match_date)='2018' then 1 end) Total
from match_results
group by location,home_team_name
union all
select
'total' as location,
'total' as home_team_name,
count(case when extract(month from match_date)=1 then 1 end) january_2018,
count(case when extract(month from match_date)=2 then 1 end) february_2018,
count(case when extract(month from match_date)=3 then 1 end) march_2018,
count(case when extract(year from match_date)='2018' then 1 end) Total
from match_results
;