私は、すべてのクライアント、そのプロジェクト、各プロジェクトで費やされた時間、合計請求額、および請求書総数のリストを生成しようとしています。私は、クエリを実行すると複数のテーブルから合計を集計するMySQLクエリ
SELECT
c.name as client,
p.name as project,
SUM(t.hours) as hours,
SUM(ci.amount) as invoice_amount,
COUNT(ci.id) as number_invoices
FROM
projects p
INNER JOIN client_master c ON c.harvest_id = p.client_id
INNER JOIN timesheet t ON t.project_id = p.id
LEFT OUTER JOIN projects_contracts pc ON pc.project_id = p.id
INNER JOIN contracts_invoices ci ON ci.contract_id = pc.contract_id
GROUP BY
c.name,
p.name
ORDER BY
c.name,
p.name,
t.hours
、「時間」は正しく計算されているが、INVOICE_AMOUNTとnumber_invoicesのための合計/カウントがプロジェクトになく、テーブル内のインボイスの合計数に文脈的に結合されていません。私は()の合計の1をコメントアウトした場合、彼らは、両方しているとき、私は適切な値を得ることはありません。
期待される成果
クライアントA、プロジェクト1、1000年、$ 10,000 2
クライアントA、プロジェクト2、5000、$ 5,000 1件の
クライアントB、プロジェクト1、100、$ 3000と、1つの
実績
クライアントA、プロジェクト1、1000年、$ 150,000 20
クライアントA、プロジェクト2、5000、$ 50,000 81
クライアントB、プロジェクト1、100、$ 83000、私は「12
グループ化してステートメントに参加しようとしましたが、成功していませんでした。見落としているシンプルなものがあるのですか、それとも完全に書き直す必要がありますか?
の作品賭け: //meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query) – Strawberry
Help私はここで、私はこのクエリを大幅に縮小しました。他に何が見えると思いますか? – markjrubin
両方の合計が入っていて、間違っている場合、値を取るときとはどのように違いますか?正しい値が誤った値よりも高いか低いか? –