首页 > 解决方案 > 如何计算相同的字段

问题描述

我正在查询以获取案件的阶段。所以现在我有 3 个阶段的三个案例(最后一个阶段插入到表 user_case_stage 中)。

SELECT DISTINCT ON (c.id)
       c.id,
       f.name
FROM schema.user a
  JOIN schema.intern_user b ON a.id = b."userId"
  JOIN schema.user_case c ON b.id = c."internUserId"
  JOIN schema.user_case_stage d ON c.id = d."userCaseId"
  JOIN schema.stage f ON d."stageId" = f.id
WHERE b.id = 1
ORDER BY c.id,d."createdAt" DESC

结果:

caseId      stageName
  1         "Pasive"
  6         "Closed"
  7         "Closed"

但我希望像这样按 stageName 计算一些东西:

total      stageName
  1         "Pasive"
  2         "Closed"

标签: sqlpostgresql

解决方案


假设你的逻辑是正确的,因为你没有提供任何信息,你可以这样做:

SELECT   
    f.name
    , count(distinct c.id) total
FROM schema.user a
JOIN schema.intern_user b ON a.id = b."userId"
JOIN schema.user_case c ON b.id = c."internUserId"
JOIN schema.user_case_stage d ON c.id = d."userCaseId"
JOIN schema.stage f ON d."stageId" = f.id
WHERE b.id = 1
group by f.name

推荐阅读