我通過PostgreSQL的generate_series(min, max)
以下列方式產生棗系列:PostgreSQL的訪問generate_series()細胞
SELECT
generate_series(getstartdate(some arguments)
, getenddate(some arguments), interval '1 day')
FROM taskresults
getstartdate()
和getenddate()
分別返回給定任務的開始和結束日期。我有更多的表Employees(employeeid, taskid, worktime)
和Tasks(taskid, startdate, enddate)
。
我的目標是從我生成的系列中獲取每天按員工分組的工作時間。我怎樣才能執行這個連接?請注意,我無法直接訪問表Tasks
中的列startdate
和enddate
我只能通過上述功能訪問日期。工作時間以小時/天爲單位,因此我必須通過SUM()
將員工進行的每項任務彙總到系列中給定的日期。問題是我不知道如何訪問生成的系列中的日期。
編輯
數據結構:
CREATE TABLE employees
(
employeeid serial NOT NULL,
firstname character varying(32),
lastname character varying(32),
qualification character varying(32),
incomeperhour numeric,
)
CREATE TABLE employeetasks
(
projectid integer,
taskid integer,
employeeid integer,
hoursperday real,
)
CREATE TABLE taskresults
(
simulationid integer,
taskid integer,
duration integer
)
CREATE TABLE tasks
(
projectid integer NOT NULL,
taskname character varying(32),
startdate character varying(32),
enddate character varying(32),
predecessor integer,
minduration integer,
maxduration integer,
taskid integer,
)
一些解釋:
整個數據庫進行仿真,首先你定義一個任務計劃(見表tasks
),然後運行插入模擬結果寫入taskresults
。正如您所看到的,我只在結果中存儲duration
,這就是爲什麼我只能使用getstartdate
/getenddate
函數訪問每個任務的日期範圍。表employeetasks
基本上將僱員從employees
表中分配到task
表中,並且他們每天在該任務中工作的小時數。
「taskresults」的定義是什麼? –
我用表格定義和一些解釋更新了我的帖子 – nephix
我只是無法弄清楚其餘部分應該如何組合在一起,究竟是什麼問題,或者這些神奇的getstartdate和getenddate函數是做什麼的。 –