Je suis générer une série de dates via generate_series(min, max)
de PostgreSQL de la manière suivante:cellules accès PostgreSQL à generate_series()
SELECT
generate_series(getstartdate(some arguments)
, getenddate(some arguments), interval '1 day')
FROM taskresults
getstartdate()
et getenddate()
sont chacun retour la date de début et de fin d'une tâche donnée. J'ai plus de tables Employees(employeeid, taskid, worktime)
et Tasks(taskid, startdate, enddate)
.
Mon objectif est de faire en sorte que le temps de travail des employés soit groupé chaque jour de ma série générée. Comment puis-je effectuer cette jointure? Notez que je n'ai pas accès direct aux colonnes startdate
et enddate
dans le tableau Tasks
Je ne peux accéder aux dates que via les fonctions mentionnées ci-dessus. Le temps de travail est en heures/jour, donc je dois l'agréger via SUM()
pour chaque tâche que l'employé travaille à la date donnée dans la série. Le problème est que je ne sais pas comment accéder à une date dans la série générée.
EDIT
Structures de données:
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,
)
Quelques explications:
La base de données entière est pour la simulation afin d'abord vous définissez un calendrier des tâches (dans le tableau tasks
), puis exécutez la simulation qui insère les résultats en taskresults
. Comme vous pouvez le voir, je ne stocke que le duration
dans les résultats, c'est pourquoi je ne peux accéder aux plages de dates pour chaque tâche qu'avec les fonctions getstartdate
/getenddate
. La table employeetasks
affecte essentiellement les employés de la table employees
au tableau task
avec une quantité d'heures qu'ils travaillent dans cette tâche par jour.
Quelle est la définition de "taskresults"? –
J'ai mis à jour mon post avec des définitions de tables et quelques explications – nephix
Je n'arrive pas à comprendre comment le reste est censé s'emboîter, quel est exactement le problème que vous rencontrez, ou ce que ces fonctions getstartdate et getenddate magiques sont censées faire . –