0

我有一个用户表、一个事件表(包含一个城市位置)和一个 RSVP 表(哪些用户参加了哪些活动)。我想分析哪些用户参加了特定城市中最多的活动。

我想我需要一个名为 user_location_counts 的新表,其中包含以下列:user、location 和 count,其中 count 是给定城市中给定用户的 RSVP 计数。然后,我只需要这样的查询:

SELECT user FROM user_location_counts WHERE city = 'XYZ' ORDER BY count DESC.

构建此表的最有效方法是什么?有更好的方法吗?我有大约 300 万用户和 1000 万个回复项目,这意味着效率非常重要。

4

1 回答 1

1

您可以使用如下查询创建表:

create table User_Location_Counts as
    select r.userId, e.city, count(*) as cnt
    from rsvp r join
         events e
         on e.eventId = r.eventId
    group by r.userId, e.city;

如果您需要在添加新数据时使表保持最新,那么您可能需要触发器。或者,如果您可以忍受滞后,您将需要定期重建表。

于 2013-08-07T02:50:03.390 回答