我的數據集包含來自不同行業的不同公司的日常(實際上是工作日)時間序列,我使用PostgreSQL。我的數據集中有一個指標變量,取值爲1,-1和大部分時間爲0.爲了更好地理解問題,我指的是指標變量對於給定公司指標事件不等於零的情況。行中部分重複的更新表
如果對於一個給定的行業不止一個指示器事件在某一天,在尊重公司的指標變量應更新爲0
我們可以把下面的示例數據集:
day company indicator industry
2012-01-12 A 1 financial
2012-01-12 B 1 consumer
2012-01-12 C 0 consumer
2012-01-13 A 0 financial
2012-01-13 B 1 consumer
2012-01-13 C 0 consumer
2012-01-16 A 1 financial
2012-01-16 B -1 consumer
2012-01-16 C 1 consumer
因此,應更新爲零的指標值將在2012年1月16日公司B和C的條目中顯示,因爲它們都來自同一行業並在同一天經歷了指標事件。
我的想法是工作與經營者存在:
update mytable t1 set indicator = 0
where exists (
select 1
from mytable t2
where t2.day = t1.day
and t2.industry = t1.industry
and t2.indicator <> 0
and t1.indicator <> 0)
但不知何故,所有的指標值更新爲0,我想不通爲什麼。
你有什麼想法如何解決這個問題,或者如何用另一種方法解決我的問題?
如果{day,company,industry}都一樣,您是否有額外的關鍵字段(例如「id」)來區分記錄? – wildplasser
@wildplasser不,但我也想過。我可以添加它與CREATE SEQUENCE id_seq; ALTER TABLE mytable ADD id INT UNIQUE; ALTER TABLE mytable ALTER COLUMN ID SET DEFAULT NEXTVAL('id_seq'); UPDATE TABLE mytable SET id = NEXTVAL('id_seq'); ALTER TABLE mytable ADD PRIMARY KEY(id) – user3319629
@wildplasser但是你問的問題不會發生,因爲組合(日,公司)總是不同的 – user3319629