PostgreSQL将另一个属性中的一个属性与另一个属性进行比

时间:2017-11-07 22:58:15

标签: sql postgresql

好的,长话短说我在一个项目上工作,我需要知道场地的容量是否低于80%。 我有一个名为Events的表,一个事件有一个:

的EventID 事件名称 EventCrowd

在另一张表中,我得到的地点如下: VenueID VenueCapacity VenueStyle

我需要使用JOIN找出场地不到80%满的所有模块。

我有点难过如何做到这一点!

1 个答案:

答案 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