PostgreSQL - 汇总数据的最佳方法

时间:2017-07-29 10:53:37

标签: sql postgresql group-by

我们在系统中有如下数据

用户数据 经验 教育 工作申请

这些数据将在整个应用程序中使用,并且这些数据也附加了很少的逻辑。 为了确保这些数据在整个应用程序中是一致的,我想创建相同的View并计算这些数据然后在不同的地方使用此视图。

现在的问题是,由于细节表彼此之间没有关系,我应该如何创建视图

  • 为每个表创建不同的视图,然后使用group by
  • 创建一个视图并编写子查询以获取这些数据

从绩效角度来看,哪一种是最好的方法?

例如

SELECT
  UserId,
  COUNT(*) AS ExperienceCount,
  0 AS EducationCount
FROM User
INNER JOIN Experience ON user_id = User_Id
GROUP BY 
  UserId
UNION ALL
SELECT
   UserId,
   0,
   COUNT(*)
FROM User
INNER JOIN Education ON user_id = user_id
GROUP BY 
  UserId

然后按此分组以获得每个用户一行中所有这些数据的摘要。

1 个答案:

答案 0 :(得分:0)

编写您指定的查询的一种方法可能是:

typeof foo.bar != "undefined"

这也可以写成SELECT UserId, SUM(ExperienceCount), SUM(EducationCount FROM ((SELECT UserId, COUNT(*) as ExperienceCount, 0 AS EducationCount FROM Experience GROUP BY UserId ) UNION ALL (SELECT UserId, 0, COUNT(*) GROUP BY UserId ) ) u GROUP BY UserId; FULL JOIN,并使用相关的子查询。根据您的数据,这些中的每一种都适用于不同的情况。