出席率低于平均值的SQL查找组

出席率低于平均值的SQL查找组,sql,oracle,Sql,Oracle,我怎样才能使与会者人数低于平均水平?这是我的Oracle查询 SELECT e.event_id EventID,c.concert_name ConcertName, c.concert_date, AVG(e.attendance) Attendance FROM event e INNER JOIN concert c ON c.concert_id = e.concert_id WHERE Attendance - AVG(e.Attendance) GROUP BY c.con

我怎样才能使与会者人数低于平均水平?这是我的Oracle查询

SELECT e.event_id EventID,c.concert_name ConcertName, c.concert_date, 
AVG(e.attendance) Attendance

FROM event e INNER JOIN concert c ON c.concert_id = e.concert_id 
WHERE  Attendance - AVG(e.Attendance)
GROUP BY c.concert_id ASC;

您可以这样尝试:

SELECT e.event_id EventID,c.concert_name ConcertName, c.concert_date, 
AVG(e.attendance) Attendance
FROM event e INNER JOIN concert c ON c.concert_id = e.concert_id 
WHERE  e.attendance < (select AVG(ev.attendance) from event ev)
GROUP BY c.concert_id ASC;
使用平均。。在分析函数上且没有相关子查询:

SELECT eventId,
       ConcertName,
       Concert_Date
FROM   (
  SELECT e.event_id EventID,
         c.concert_name ConcertName,
         c.concert_date,
         e.attendance,
         AVG(e.attendance) OVER () AS avg_Attendance
  FROM   event e
         INNER JOIN concert c
         ON c.concert_id = e.concert_id
)
WHERE  attendance < avg_attendance;

这是可行的,但其中一行显示的出勤率高于平均水平。可能有什么问题?duale的平均出勤率作为平均出勤率*第9行错误:ORA-00907:缺少右括号。*就在e之前。attendance@user3346221谢谢已修复,该行前缺少逗号。该操作正常,但当我尝试在select语句中选择其他字段时,出现错误。我修改了第一部分,如下进行比较选择eventId、ConcertName、Concert_日期、出席人数、平均趋势错误:选择eventId,*第1行错误:ORA-00937:附近没有单个组功能错误eventid@user3346221使用已在内部查询中计算的avg_考勤,而不是尝试在外部查询中使用聚合函数avg重新计算。