Mysql查询以获取INNER联接查询中第一笔和最后一笔交易之间的天数

时间:2019-12-20 04:25:03

标签: mysql join

我有来自3个不同数据库的3个表,在这些表上我应用了内部联接来获取数据。 说我有db1.tab1,db2.tab2,db3.tab3。所以我的查询是:

select a.tran_cap_dt_tm, b.lang, c.email
from db1.tab1 a
inner join db2.tab2 on a.id = b.id
inner join db3.tab3 on b.id = c.id;

这给了我这个

tran_captr_dt_tm                lang    email

2019-07-01T10:26:13.000+0800    en_us   test@test.commm
2019-07-10T10:26:13.000+0800    en_us   test@test.commm
2019-07-22T10:26:13.000+0800    en_us   test@test.commm

2019-07-01T10:26:13.000+0800    en_us   tgarden@gmail.com
2019-07-10T10:26:13.000+0800    en_us   tgarden@gmail.com
2019-07-24T10:26:13.000+0800    en_us   tgarden@gmail.com

2019-07-01T10:26:13.000+0800    en_us   jkrl@gmail.com
2019-07-10T10:26:13.000+0800    en_us   jkrl@gmail.com
2019-07-27T10:26:13.000+0800    en_us   jkrl@gmail.com

但这不是我想要的。我需要计算第一笔交易和最后一笔交易之间的持续时间(以天为单位)。像这样:

duration_in_days    lang    email
22                  en_us   test@test.commm
24                  en_us   tgarden@gmail.com
27                  en_us   jkrl@gmail.com

我正在使用mysql 5.7

1 个答案:

答案 0 :(得分:1)

SELECT DATEDIFF(DATE_ADD(MAX(a.tran_captr_dt_tm),INTERVAL 1 DAY),MIN(a.tran_captr_dt_tm)) as duration_in_days, b.lang, c.email
FROM db1.tab1 a
INNER JOIN db2.tab2 on a.id = b.id
INNER JOIN db3.tab3 on b.id = c.id;
GROUP BY c.email
相关问题