2017-03-13 2 views
0

의 시간을 기준으로 범주 형 변수를 추가 나는 데이터베이스PostgreSQL을

CREATE TABLE data.atc full 

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

    ) 

을 가지고 있고 값 0, 1 소요 데이터베이스에 다른 열을 추가 싶어

"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" 

같은 데이터가 보인다, 2, ... 특정 날짜 및 특정 일련 번호에 대한 다른 시간 항목. 그래서 모든 일련 번호에 대해 하루의 첫 번째 항목과 마찬가지로 두 번째 항목을 체크 아웃 할 수 있습니다.

는 내가이 작업을 수행 할 수있는 방법을 생각하지 못했습니다 열

ALTER TABLE data.atc ADD COLUMN od 

를 추가로 시작합니다. 도와주세요.

+0

? 여기서 확실한 질문은 없습니다. –

답변

0

왜 검색어를 사용하지 않는 것이 좋을까요?

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

당신 저장 데이터에서이 값,하지만이 최신 상태를 유지하는 고통스러운 것입니다. update이 발생하고 새로운 데이터가 입력됩니다. . . 새 값을 할당하는 방법은 무엇입니까?

당신은 update를 사용하여 값을 저장할 수 있습니다 :

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

고든에게 감사드립니다. 데이터를 업데이트 할 필요가 없습니다. 하지만 seqnum을 데이터베이스에 저장하려면 어떻게해야합니까? – Joel