Bonjour,

Quelqu’un peut-il m’aider ? SVP

Je souhaite obtenir un rang par date de chargement des pages en sql, pour chaque session.

J’utilise MySql.

Ma table « tr » contient les champs suivants :

Session
Page_name
Request_date


J’utilise la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT *, (SELECT COUNT(DISTINCT(a.REQUEST_date))+1 AS rang FROM tr AS a 
WHERE (a.REQUEST_date < b.REQUEST_date)) AS rang 
FROM tr AS b

J’obtiens un cassement du type

Session | Page_name | Request_date| Rang |
S1 | Page 1 |XXX11:05:09 | 1 |
S1 | Page 2 |XXX11:05:10 | 2 |
S1 | Page B |XXX11:05:11 | 3 |
S2 | Page 1 |XXX11:05:12 | 4 |
S2 | Page X |XXX11:05:13 | 5 |
S2 | Page Y |XXX11:05:14 | 6 |
S2 | Page Z |XXX11:05:15 | 7 |


Mais ce que j’aimerais obtenir c’est :

Session | Page_name | Request_date | Rang |
S1 | Page 1 |XXX11:05:09 | 1 |
S1 | Page 2 |XXX11:05:10 | 2 |
S1 | Page B |XXX11:05:11 | 3 |
S2 | Page 1 |XXX11:05:12 | 1 |
S2 | Page X |XXX11:05:13 | 2 |
S2 | Page Y |XXX11:05:14 | 3 |
S2 | Page Z |XXX11:05:15 | 4 |


J’ai donc ajouté un group by SESSION mais cela ne fonctionne pas, j’obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT *, (SELECT COUNT(DISTINCT(a.REQUEST_DATE))+1 AS rang FROM tr AS a 
WHERE (a.REQUEST_DATE < b.REQUEST_DATE)) AS rang 
FROM tr AS b
GROUP BY SESSION;
Session | Page_name | Request_date| Rang |
S1 | Page 1 |XXX11:05:09 | 1 |
S2 | Page 1 |XXX11:05:12 | 4 |