Je cherche à obtenir l'écart maximal entre deux tables par jour, par identifiant. J'ai les données suivantes dans une base de données MySQLSous-requêtes SQL pour essayer d'obtenir la différence maximale de la même colonne dans deux tables
insert into test.foo values ('2010-01-10', 1, 10);
insert into test.foo values ('2010-01-10', 1, 5);
insert into test.foo values ('2010-01-10', 2, 10);
insert into test.foo values ('2010-01-10', 2, 10);
insert into test.foo values ('2010-01-10', 3, 15);
insert into test.foo values ('2010-01-10', 3, 15);
insert into test.foo values ('2010-01-11', 1, 5);
insert into test.foo values ('2010-01-11', 1, 5);
insert into test.foo values ('2010-01-11', 2, 5);
insert into test.foo values ('2010-01-11', 2, 5);
insert into test.foo values ('2010-01-11', 3, 5);
insert into test.foo values ('2010-01-11', 3, 5);
insert into test.bar values ('2010-01-10', 1, 5);
insert into test.bar values ('2010-01-10', 1, 5);
insert into test.bar values ('2010-01-10', 2, 5);
insert into test.bar values ('2010-01-10', 2, 5);
insert into test.bar values ('2010-01-10', 3, 5);
insert into test.bar values ('2010-01-10', 3, 5);
insert into test.bar values ('2010-01-11', 1, 10);
insert into test.bar values ('2010-01-11', 1, 10);
insert into test.bar values ('2010-01-11', 2, 5);
insert into test.bar values ('2010-01-11', 2, 5);
insert into test.bar values ('2010-01-11', 3, 5);
insert into test.bar values ('2010-01-11', 3, 5);
Voici ma question:
SELECT t1.`date`, t1.id, t1.sums, t2.sums, max(t1.sums - t2.sums) FROM
(select `date`, id, sum(val) sums
from test.foo
group by `date`, id) as t1,
(select `date`, id, sum(val) sums
from test.bar
group by `date`, id) as t2
WHERE t1.`date` = t2.`date` AND t1.id = t2.id
group by t1.`date`
Je reçois ce résultat:
+---------------------+----+------+------+------------------------+
| date | id | sums | sums | max(t1.sums - t2.sums) |
+---------------------+----+------+------+------------------------+
| 2010-01-10 00:00:00 | 1 | 15 | 10 | 20 |
| 2010-01-11 00:00:00 | 1 | 10 | 20 | 0 |
+---------------------+----+------+------+------------------------+
2 rows in set (0.00 sec)
Je voudrais être obtenir ce résultat: J'obtiens ce résultat:
+---------------------+----+------+------+------------------------+
| date | id | sums | sums | max(t1.sums - t2.sums) |
+---------------------+----+------+------+------------------------+
| 2010-01-10 00:00:00 | 1 | 15 | 10 | 20 |
| 2010-01-11 00:00:00 | 2 | 10 | 10 | 0 | <-----
+---------------------+----+------+------+------------------------+
Quelqu'un peut-il m'aider? J'aimerais obtenir la différence maximale, puis la ligne qui va avec. Cette requête me donne la différence correcte, mais pas l'id et les sommes qui vont avec. Un collègue a également suggéré de regrouper par id, mais comme je le pensais, cela a simplement aplati le résultat et chaque identifiant a été listé à la place du seul id pour le jour qui avait la différence maximale.
Merci beaucoup à l'avance
Quelle base de données et quelle version? – RedFilter
Ne devrait pas id = 3 être aussi dans vos résultats? – RedFilter
mysql Ver 14.14 Distrib 5.1.39, pour Win32 (ia32) –