gpt4 book ai didi

PostgreSQL 访问 generate_series() 单元格

转载 作者:行者123 更新时间:2023-11-29 14:01:38 24 4
gpt4 key购买 nike

我通过 PostgreSQL 的 generate_series(min, max) 以下列方式生成日期系列:

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 中的列 startdateenddate 我只能通过上述那些函数访问日期.工作时间以小时/天为单位,因此我必须通过 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 表,其中包含他们每天在该任务中工作的小时数。

最佳答案

您可以像其他任何事情一样JOIN生成的系列。

INNER JOIN generate_series(getstartdate(some arguments), getenddate(some arguments), interval '1 day') workday ON (...)

如果不知道数据的存储方式,就很难计算出连接条件。

此外,您的数据结构很奇怪。员工有“taskid”? n:1 员工 -> 任务?我真的无法编写完整的查询,因为我没有得到数据结构。

关于PostgreSQL 访问 generate_series() 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12855762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com