Comment comparé une ligne avec une ligne précédente en MySQL
Résolu/Fermé
A voir également:
- Comment comparé une ligne avec une ligne précédente en MySQL
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Aller à la ligne excel - Guide
- Apparaitre hors ligne instagram - Guide
- Test performance pc en ligne - Guide
3 réponses
yg_be
Messages postés
23399
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 décembre 2024
Ambassadeur
1 556
19 avril 2019 à 21:21
19 avril 2019 à 21:21
bonjour, pourquoi cherches-tu l'action précédente?
moi je ferais, pour commencer:
moi je ferais, pour commencer:
select t1.id_trace, t1.id_user, t1.action_time, t2.id_trace, t2.action_time from trace as t1, trace as t2 where t1.id_user = t2.id_user and t2.action_time - t1.action_time > 20/24/3600
yg_be
Messages postés
23399
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 décembre 2024
Ambassadeur
1 556
19 avril 2019 à 21:23
19 avril 2019 à 21:23
bonjour, si un utilisateur fait une action à un moment, une autre 15 secondes plus tard, et une troisième encore 15 secondes plus tard, cela compte pour combien?
Rebonjour,
Voici comment j'ai finalement résolu mon problème :
SET @tranche=1;
CREATE TABLE tmpt (
id INT PRIMARY KEY AUTO_INCREMENT,
id_user INT,
action_time DATETIME
)
INSERT INTO tmpt(id_user, action_time) (
SELECT id_user, action_time
FROM trace
GROUP BY id_user, action_time
);
SELECT id_user, count(distinct tranche) as nb_tranche
FROM (SELECT t1.id_user, @tranche:= IF( t1.id_user = t2.id_user AND t1.action_time < t2.action_time -20, @tranche, @tranche +1) as tranche FROM tmpt t1 JOIN tmpt t2 ON t1.id=t2.id-1) as TMP
GROUP BY id_user;
En vous remerciant pour vos réponses :)
Voici comment j'ai finalement résolu mon problème :
SET @tranche=1;
CREATE TABLE tmpt (
id INT PRIMARY KEY AUTO_INCREMENT,
id_user INT,
action_time DATETIME
)
INSERT INTO tmpt(id_user, action_time) (
SELECT id_user, action_time
FROM trace
GROUP BY id_user, action_time
);
SELECT id_user, count(distinct tranche) as nb_tranche
FROM (SELECT t1.id_user, @tranche:= IF( t1.id_user = t2.id_user AND t1.action_time < t2.action_time -20, @tranche, @tranche +1) as tranche FROM tmpt t1 JOIN tmpt t2 ON t1.id=t2.id-1) as TMP
GROUP BY id_user;
En vous remerciant pour vos réponses :)
23 avril 2019 à 10:07
Merci pour ta réponse mais je ne saisi pas bien ce que représente le résultat de la jointure sur id_user.