您好,我在确定查询错误时遇到了一些麻烦。
我正在尝试输出与事件名称无关的所有事件的平均成本。但是,在处理我的查询时,似乎在事件名称和平均值之间建立了连接。我相信查询会生成与该名称相关的每个事件的平均成本,而不是总平均值。一旦我得到平均值,我想只显示超出平均成本价格的事件。
查询:
SELECT Event_Name AS 'Event Name'
,ROUND(Event_Cost) AS 'Event Cost'
,ROUND(AVG(Event_Cost)) AS 'Average Cost Of Events'
,ROUND(Event_Cost - AVG(Event_Cost)) AS 'Amount Over Average £'
FROM Event
WHERE Event_Cost > (SELECT AVG(Event_Cost) FROM Event)
GROUP BY Event_Name;
我确信这是一件非常简单的事情。提前致谢
答案 0 :(得分:0)
您的查询中存在两个问题。第一个是因为您选择了event_name,所以您的平均值会在该级别进行计算;另一个问题是,您同时使用Event_Cost
列并同时汇总,来自同一张表,并且这是不可能的。
您应该从内部查询中获取聚合值,并将其与您的初始表交叉连接,如此
SELECT t1.Event_Name AS 'Event Name',
ROUND(Event_Cost) AS 'Event Cost',
ROUND(t2.aver) AS 'Average Cost Of Events',
ROUND(Event_Cost - t2.aver) AS 'Amount Over Average £'
FROM Event t1
CROSS JOIN
(
SELECT AVG(Event_cost) as aver
FROM Event
) t2
WHERE t1.Event_Cost > t2.aver;