Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : PL/pgSQL » Histoire de count et de jointures... » 16/02/2011 21:06:45
Je viens de tester la requête, à première vue le résultat correspond exactement à ce que je veux ! Merci encore !
Elise
#2 Re : PL/pgSQL » Histoire de count et de jointures... » 16/02/2011 16:01:56
Merci pour cette réponse très rapide !
Effectivement le modèle de données n'est pas terrible mais je ne peux malheureusement pas le modifier :-/
Je pourrai tester la requête en fin de journée mais à première vue cela semble bien répondre à mon besoin ! Le fait de pouvoir appeler la table main_event depuis la sous-requête correspond à ce que j'ai cherché à faire pendant un bon moment :-)
Par contre il ne manquerait pas un "from events_stats" juste avant "as main_event" ?
select event_id, employee_id, (select count(employee_request) from events_stats as tmp_count where employee_request=true and tmp_count.employee_id=main_event.employee_id and tmp_count.event_date < main_event.event_date) as main_event;
Elise
#3 PL/pgSQL » Histoire de count et de jointures... » 15/02/2011 23:38:56
- Worthatry
- Réponses : 4
Bonjour,
J'ai des connaissances SQL plutôt basiques et je bute sur une requête ; je pense que la réponse sera évidente pour une personne un tant soit peu expérimentée en SQL...
Voici les colonnes sur lesquels j'exécute ma requête (appartenant à une même table) :
event_id (int)
event_date (timestamp)
employee_id (int)
employee_request (bool)
Et voici les relations entre colonnes :
- Il y a 1 et un seul event_date par event_id
- Il y a de 1 à 8 employee_id par event_id
- Il y a 0 ou 1 employee_request par employee_id par event_id
Pour le moment, j'arrive à faire la chose suivante : créer une table affichant le nombre d'employee_request pour chaque employee_id pour chaque event_id.
Voici la requête :
select event_id, employee_id, request_cnt from events_stats as stats1 JOIN
(select employee_id, count (employee_request) as request_cnt from events_stats where employee_request = true group by employee_id) as stats2
on stats2.employee_id = stats1.employee_id
Mais voici ce que j'aimerai réaliser :
Créer une table affichant le nombre d'employee_request pour chaque employee_id pour chaque event_id, MAIS avec le count d'employee_request comptabilisant uniquement les lignes où l'event_date < event_date de l'event_id correspondant.
En fait, je souhaiterai variabiliser l'élément TIMESTAMP ci-dessous :
select event_id, employee_id, request_cnt from events_stats as stats1 JOIN
(select employee_id, count (employee_request) asrequest_cnt from events_stats where employee_request = true and event_date < (TIMESTAMP '2010-12-29 01:07:40' - interval '1 seconds') group by employee_id) as stats2
on stats2.employee_id = stats1.employee_id
Il faudrait que le TIMESTAMP '2010-12-29 01:07:40' devienne dynamiquement stats1.event_date, ce qui est impossible à réaliser dans la sous-requête… je tourne en rond...
Merci pour votre aide !
Elise
Pages : 1