0

いくつかの異なる種類のジョブのテーブルの集計値を取得したいと考えています。これら 3 つのクエリを 1 つのクエリに結合できますか?

SELECT
    COUNT(*) AS totaljobs,
    SUM(filesize) AS totalfilesize
FROM Job

SELECT
    COUNT(*) AS assignedjobs,
    SUM(filesize) AS assignedjobs
FROM Job
JOIN Assignment ON Assignment.job_id = Job.id

SELECT
    COUNT(*) AS unassignedjobs,
    SUM(filesize) AS unassignedjobs
FROM Job
LEFT JOIN Assignment ON Assignment.job_id = Job.id
WHERE Assignment.job_id IS NULL

クエリは、期待どおりに動作しますtotaljobs = assignedjobs + unassignedjobs。1 つのクエリでより効率的に行う方法があるように感じますが、方法がわかりません。

4

1 に答える 1

0

これを試して

SELECT
    SUM(case when Assignment.job_id IS NOT NULL then 1 else 0 end) AS assignedjobs,
    SUM(case when Assignment.job_id IS NULL then 1 else 0 end) AS unassignedjobs,
    COUNT(*) as totaljobs
FROM Job
LEFT JOIN Assignment ON Assignment.job_id = Job.id
于 2013-10-30T10:23:55.200 に答える