所以,我正在尝试使用以下信息创建一个View Table:EventCode,事件名称,节目数量,屏幕成本,总筛选成本(节目数量*筛选成本),促销成本,生产成本,总成本(总屏幕成本+促销成本+生产成本),预期 收入(使用BaseTicketPrice),实际收入,给定的总折扣(预期收入 - 实际收入)和利润(所有成本 - 实际收入)。
因此,此视图中涉及大量信息数学。
此外,信息来自多个表格,大约4个。
我必须找到表格EventShow中显示的节目数量,然后我必须在后面的等式中使用节目数量。如何构造表的计数,然后在方程式/聚合中再次使用它?
我意识到我下面的内容确实不正确,但我现在主要在COUNT部分挣扎。
CREATE OR REPLACE VIEW TicketDetails AS
SELECT
E.EventCode,
E.EventName,
E.EventShows Count(*) as NumberOfShows,
(E.ScreeningCost * NumberOfShows) as TotalScreeningCost,
(E.BaseTicketPrice * Ticket(Count(*))) as ExpectedRevenue,
E.PromotionCost,
E.ProductionCost,
(TotalScreeningCost + E.PromotionCost + E.ProductionCost) as TotalCost,
(E.BaseTicketPrice * TS.TicketsSolds) as ActualRevenue,
(ExpectedRevenue - ActualRevenue) as TotalDiscounts
(TotalCost - ActualRevenue) as Profit
FROM Event E, Ticket T, TicketSale TS, EventShow ES
WHERE (E.EventCode = TS.EventCode);
答案 0 :(得分:0)
选择列表是在sql中执行的最后一个子句。选择列表中定义的任何别名只能在order by和having子句中引用,但不能在select list或where子句中引用。
另一个问题是,如果您连接多个表,则无法使用count(*)
或count(tablename.*)
计算从其中一个表返回的行,因此您必须使用该表中不能使用的字段如果从该表返回一行,则为null - 这应该是您加入表的字段。基于表格的简化示例:
select e.eventcode, e.eventname, count(es.eventcode) as numberofshows, e.screeningcosts*count(es.eventcode) as totalscreeningcosts
from events e left join eventshows es
on e.eventcode=es.eventcode
group by e.eventcode, e.eventname, e.screeningcosts
我假设2个表各有一个事件代码字段。