2017-03-13 6 views
0

Ich habe eine DatenbankHinzufügen von kategorialen Variablen basierend auf der Zeit in Postgresql

CREATE TABLE data.atc full 

    (
     index character varying, 
     serial_nbr bigint, 
     date_ date, 
     time_ time without time zone, 

    ) 

und die Daten sieht aus wie

"35107592";40873618845;"2016-01-20";"10:33:00" 
"35107593";1600473508;"2016-01-20";"10:33:00" 
"35107594";40872283641;"2016-01-20";"10:34:00" 
"35107596";713186627;"2016-01-20";"10:34:00" 
"35107598";42568856045;"2016-01-20";"10:34:00" 
"35107600";1836730779;"2016-01-20";"10:34:00" 
"35107601";713323741;"2016-01-20";"10:34:00" 
"35107603";713985185;"2016-01-20";"10:34:00" 
"35107604";40872125248;"2016-01-20";"10:34:00" 
"35107605";711995425;"2016-01-20";"10:34:00" 
"35107606";40877157402;"2016-01-20";"10:34:00" 
"35107607";711492382;"2016-01-20";"10:34:00" 

ich eine andere Spalte der Datenbank hinzufügen wollen, die 0 Wert annimmt, 1, 2, ... für verschiedene Zeiteinträge für einen bestimmten Tag und eine bestimmte Seriennr. So kann ich für jede Seriennummer den ersten Eintrag des Tages und ähnlich den zweiten Eintrag des Tages und so weiter auschecken.

Ich beginne mit Spalte hinzufügen

ALTER TABLE data.atc ADD COLUMN od 

Ich konnte keine Art und Weise denken, dies zu tun. Bitte helfen Sie.

+0

Was Sie genau suchen zu erreichen? Es gibt hier keine eindeutige Frage. –

Antwort

0

Warum nicht einfach eine Abfrage verwenden?

select a.*, 
     row_number() over (partition by serial_nbr, date_ order by time_) as seqnum 
from data.atc a; 

Sie kann speichern dieser Wert in den Daten, aber dann ist es schmerzhaft es up-to-date zu halten. Die update findet statt, neue Daten kommen rein. . . und wie ordnen Sie die neuen Werte zu?

Sie können den Wert speichern update mit:

update data.atc a 
    set od = seqnum 
    from (select a.*, 
       row_number() over (partition by serial_nbr, date_ order by time_) as seqnum 
      from data.atc a 
     ) aa 
    where aa.serial_nbr = a.serial_nbr and aa.date_ = a.date_ and 
      aa.time_ = a.time_; 
+0

Danke Gordon. Ich muss die Daten nicht aktualisieren. Aber wie speichere ich Seqnum in meiner Datenbank? – Joel

Verwandte Themen