好的,长话短说我在一个项目上工作,我需要知道场地的容量是否低于80%。 我有一个名为Events的表,一个事件有一个:
的EventID 事件名称 EventCrowd
在另一张表中,我得到的地点如下: VenueID VenueCapacity VenueStyle
我需要使用JOIN找出场地不到80%满的所有模块。
我有点难过如何做到这一点!
答案 0 :(得分:1)
我不太确定我的问题是否正确,但这是尝试使用硬编码值进行演示:
SELECT EventsTable.EventID, EventTitle, EventCrowd, Time, Day, VenueCapacity, VenueStyle, EventCrowd/VenueCapacity::float AS PercentCrowd
FROM (
VALUES (1, 'FooFighters', 1000), (2, 'BarFighters', 1000)
) EventsTable(EventID, EventTitle, EventCrowd)
INNER JOIN (
VALUES (1, 1, 2, 'XX:XX', 'XX'), (2, 2, 1, 'YY:YY', 'YY')
) TimeTable(TimeID, EventID, VenueID, Time, Day)
ON EventsTable.EventID = TimeTable.EventID
INNER JOIN (
VALUES (1, 2000, 'Something'), (2, 1100, 'Something Else')
) VenueTable(VenueID, VenueCapacity, VenueStyle)
ON TimeTable.VenueID = VenueTable.VenueID
GROUP BY EventsTable.EventID, EventTitle, EventCrowd, Time, Day, VenueCapacity, VenueStyle
HAVING EventCrowd/VenueCapacity::float < 0.8
结果这会给你
EventID EventTitle EventCrowd Time Day VenueCapacity VenueStyle PercentCrowd
2 BarFighters 1000 YY:YY YY 2000 Something 0,5