2

既存のソフトウェア(Atlassian Jira)に対してSQLクエリを作成していますが、データベースに変更を加えることができません。

Jira(テーブル:jiraissue)内に、別のテーブル(テーブル:worklog)に0からnのワークログエントリを持ついくつかの問題があります。各作業ログには、作業を記録したユーザーのユーザーIDもあり、ユーザーは1つ以上のユーザーグループのメンバーです。これらの各問題(表:jiraissue)は、「コスト単位」として対応する別の問題(別のjiraプロジェクト内ですが、これは、非jiraの専門家には関係ないと思います)にリンクされています。

つまり、各「コスト単位」に記録されている作業の数を知りたいということです。したがって、すべての「コスト単位」と、リンクされた問題についてユーザーグループごとに記録された時間を返すクエリが必要です。最後のポイントは、「コスト単位」は、どの「コスト単位」が一緒に属しているかを知るためのコンポーネントを備えた市場であるということです。したがって、レポートユーザーに関連する「コスト単位」のみを表示するには、クエリはこれを選択するためのコンポーネントを使用しています。

私がこれまでに見つけたものは非常にうまく機能しますが、リンクされた問題があるのと同じ数の「コスト単位」の行を返しますが、すべてのリンクされた問題の合計が必要です。

どういうわけか、サブクエリのすべての結果を合計できるはずですが、これらは不可能のようです。FROMの後にsubselectステートメントを操作しようとしましたが、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を使用しています。

よろしく、ステファン

4

1 に答える 1

1

集計が正しくGROUP BY機能するには、メインの選択で -clauseを使用する必要があります。

...
GROUP BY component
...
于 2012-12-20T13:20:59.750 に答える