sql >> Database >  >> RDS >> PostgreSQL

Hoe alle rijen samen te vatten op basis van een opsommingskolom in PostgreSQL part2?

Eerder uitsluiten van de berekeningsrijen dan de vorige Total u kunt de primaire sleutel gebruiken in een accessoire-query.Declare new variabele v_fnserial .Vind een fnserial van de rij met het laatste voorkomen van 'Totaal' voor gegeven pcnum en fnname en wijs de waarde toe aan v_fnserial .Voeg in de hoofdquery een voorwaarde toe fnserial > v_fnserial .

U moet een uitzondering maken wanneer de hoofdquery null retourneert .

IF NEW.timetype = 'Total' THEN
    SELECT fnserial INTO v_fnserial
    FROM mytable 
    WHERE timetype = 'Total' AND pcnum = NEW.pcnum AND fnname = NEW.fnname
    ORDER BY fnserial DESC LIMIT 1;

    SELECT SUM(timeelapse) FROM (
        SELECT DISTINCT ON (floor(timeindex)::int) floor(timeindex)::int timeindex, timeelapse 
        FROM mytable 
        WHERE fnserial > coalesce(v_fnserial, 0) AND pcnum = NEW.pcnum AND fnname = NEW.fnname AND timetype = 'Lap' 
        ORDER BY 1, 2 DESC) alias 
    INTO v_sumtimeelapse_fn;
    IF v_sumtimeelapse_fn NOTNULL THEN
        NEW.timeelapse := v_sumtimeelapse_fn;
    ELSE
        RAISE EXCEPTION USING MESSAGE = 'There is not any previous row...';
    END IF;
END IF;



  1. hoe een mysql-query uit te voeren in yii

  2. PDOStatement - Gebruik ernstige accenten (`) in kolommen?

  3. Import dump met SQLFILE-parameter die de gegevens in de tabel niet retourneert

  4. kan de uit-parameter niet ontvangen van de Oracle-procedure uitgevoerd door mybatis