Групповая функция не допускается здесь SQL

У меня есть такие таблицы:

Участники (offering_id, visitor_id, regstr_date, amount_paid) Предложение (offering_id, teacher_id) Учитель (teacher_id, Teacher_firstname, teacher_lastname, дата_начала)

Возможно, что один посетитель может присутствовать дважды или более. Я хочу получить visitor_id, regstr_date, total total_paid, среднее количество_плат с посещаемости, где идентификатор предложения равен 30,40 или 50, а начальная дата учителя меньше, чем у любого последнего посетителя regstr_date, а средняя сумма_платы по каждому посетителю меньше 600. Мой код такой следующим образом:

select 
    distinct(a.visitor_id) as v_id ,
    max(a.regstr_date) as reg_date,
    sum(a.amount_paid) as total_pay,
    count(a.regstr_date) as attendance_count,
    avg(a.amount_paid) as average_paid
from 
    attendance a, teacher t, offer o  
where  
    a.offering_id = o.offering_id 
    and o.teacher_id = t.teacher_id 
    and a.offering_id in ('30', '40', '50') 
    and max(a.regstr_date) > t.start_date
group by 
    a.visitor_id
having 
    avg (a.amount_paid) <= 600;

Но это показывает, что групповые функции здесь не разрешены. Если возможно, не могли бы вы помочь мне с этим, пожалуйста?

1 ответ

Решение

Этот запрос написан для сервера MS-SQL

select  a.visitor_id as v_id ,
max(a.regstr_date) as reg_date,
sum(a.amount_paid) as total_pay,
count(a.regstr_date) as attendance_count,
avg(a.amount_paid) as average_paid
from attendance a Inner Join  offer o   on a.offering_id = o.offering_id
inner join  teacher t on t.teacher_id = o.teacher_id
where a.offering_id in('30','40','50') 
group by a.visitor_id,t.start_date
having avg (a.amount_paid)<=600 and  max(a.regstr_date)>t.start_date;
Другие вопросы по тегам