Keresés

Új hozzászólás Aktív témák

  • nyunyu

    félisten

    válasz Prog-Szerv #5446 üzenetére

    Klasszikusan így számolod össze az órákat az összes projektre:
    select p.id, p.name, sum(pt.hour) sum_hour
    from project p
    join project_task pt
    on pt.p_id = p.id
    group by p.id, p.name;

    (task tábla tartalma nem ad többlet infót a feladathoz, így azt nem joinoltam feleslegesen a többihez.)

    A még nem befejezett projektek kivágására az nem jó, ha beteszel egy where pt.hour>0 feltételt, mert attól még a befejezett részfeladatokat össze fogja adni.

    Helyette a komplett project id-t kell kiszűrni, amihez van olyan bejegyzés, ahol a hour = 0:
    select p.id, p.name, sum(pt.hour) sum_hour
    from project p
    join project_task pt
    on pt.p_id = p.id
    where p.id not in (select p_id from project_task where hour = 0)
    group by p.id, p.name;

    Hány project van, ami teljesen befejeződött?
    select count(distinct p.id)
    from project p
    join project_task pt
    on pt.p_id = p.id
    where p.id not in (select p_id from project_task where hour = 0);

    Ide nem kell a fenti group by, mivel most az összes rekordot akarod összeszámolni, és nem projektenként külön-külön.

Új hozzászólás Aktív témák