sql - 需要 sub sql select 的总和,但需要 sub select 中的变量

标签 sql postgresql jira

我正在为现有软件 (Atlassian Jira) 构建 SQL 查询,但无法对数据库进行任何更改。

我们在 Jira 中确实有几个问题(表:jiraissue),它们在单独的表(表:worklog)中有 0 到 n 个工作日志条目。每个工作日志还有一个记录工作的用户的用户标识,并且该用户是一个或多个用户组的成员。这些问题中的每一个(表:jiraissue)都与另一个问题(在另一个 jira 项目中,但我认为这与非 jira 专家无关)相关联,将其作为“成本单位”。

表示我们想知道每个“成本单位”上记录了多少工作。因此我们需要一个查询,它返回所有“成本单位”和每个用户组在链接问题上记录的时间。最后一点是,“成本单位”是市场,其中有一个组件可以知道哪些“成本单位”属于一起。因此,为了仅显示与报表用户相关的“成本单位”,查询正在使用用于选择此组件的组件。

到目前为止,我发现效果很好,但“成本单位”返回的行数与链接问题的行数一样多,但我需要所有链接问题的总和。

我应该能够以某种方式总结子查询的所有结果,但这似乎是不可能的。我还尝试在 FROM 之后使用子选择语句,但是我无法使用 jiraissue.id。

这是我的实际查询:

SELECT 
  myktr.pkey,
  myktr.summary,
  sum(worklog_dev),
  (SELECT 
    sum(worklog.timeworked) 
  from
    worklog 
  WHERE worklog.issueid = jiraissue.id 
    AND worklog.author IN 
    (SELECT 
      child_name 
    FROM
      CWD_MEMBERSHIP 
    where lower_parent_name = 'jira-team-sdqm')) AS worklog_sdqm,
  (SELECT 
    sum(worklog.timeworked) 
  from
    worklog 
  WHERE worklog.issueid = jiraissue.id 
    AND worklog.author IN 
    (SELECT 
      child_name 
    FROM
      CWD_MEMBERSHIP 
    where lower_parent_name = 'jira-productowner')) AS worklog_pm 
FROM
  component,
  nodeassociation,
  jiraissue AS myktr 
  INNER JOIN issuelink 
    ON (issuelink.source = myktr.id) 
  INNER JOIN jiraissue 
    ON (
      issuelink.destination = jiraissue.id
    ),
  (SELECT 
    sum(worklog.timeworked) AS worklog_dev 
  FROM
    worklog 
  WHERE worklog.issueid = jiraissue.id 
    AND worklog.author IN 
    (SELECT 
      child_name 
    FROM
      CWD_MEMBERSHIP 
    where lower_parent_name = 'jira-developers')) AS worklog_dev_table 
WHERE myktr.pkey IN 
  (SELECT 
    jiraissue.pkey 
  from
    jiraissue,
    project 
  WHERE project.id = jiraissue.project 
    AND project.pkey = 'KTR') 
  AND component.ID = nodeassociation.SINK_NODE_ID 
  and myktr.id = nodeassociation.SOURCE_NODE_ID 
  and nodeassociation.ASSOCIATION_TYPE = 'IssueComponent' 
  and component.cname = 'Project-Component' ;

你对我有什么建议吗? fyi:我们正在使用 postgreSQL。

最好的问候, 斯蒂芬

最佳答案

为了使聚合正常工作,您需要使用 GROUP BY - 主选择中的子句:

...
GROUP BY component
...

关于sql - 需要 sub sql select 的总和,但需要 sub select 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13738112/

相关文章:

php - 如何在 MySQLI 中使用准备好的语句?

php - 类 stdClass 的对象无法转换为字符串 PHP 问题

java - 如何获取 JIRA 中自定义字段的所有值?

sql - pg_dump : [archiver (db)] connection to database "mydb" failed: FATAL: database "mydb" does not exist

ruby-on-rails - 如何将构建在 rails 上的本地 postgresql 数据库推送到 heroku?

javascript - Jira 问题 View 使自定义字段只读

mysql - SQL 错误代码 1054 未知列

sql - 查找所有相关记录

sql - 如何并行执行 SQL 过程中的子任务

postgresql - 在 jOOQ 中使用 PostgreSQL CITEXT 扩展