我正在寻找每个ID每天两个表之间的最大差异。我有一个MySQL数据库SQL子查询试图获得两个表中同一列的最大差异
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);
在这里,下面的数据是我的查询:
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`
我得到这个结果:
+---------------------+----+------+------+------------------------+
| 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)
我想收到此结果: 我得到这个结果:
+---------------------+----+------+------+------------------------+
| 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 | <-----
+---------------------+----+------+------+------------------------+
任何人都可以帮助我吗?我希望得到最大的区别,然后是与之相伴的路线。这个查询给了我正确的区别,但不是与它一起使用的id和总数。一位同事也建议按ID分组,但正如我所认为的那样,只是将结果放平,并且每个ID都列出来,而不是一天中具有最大差异的一个ID。
感谢很多提前
什么数据库和版本? – RedFilter 2010-01-12 14:38:07
不应该也是你的结果? – RedFilter 2010-01-12 14:39:37
mysql Ver 14.14 Distrib 5.1.39,用于Win32(ia32) – 2010-01-12 14:40:50