【问题标题】:Mysql query to Get number of days between first and last transaction in a INNER join queryMysql查询以获取INNER联接查询中第一个事务和最后一个事务之间的天数
【发布时间】:2019-12-20 04:25:03
【问题描述】:

我有来自 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

【问题讨论】:

  • test@test.commmduration_in_days22。专业提示:不要将数据发布为人们不会回复或忽略的图像。将其设为格式化文本。
  • 已修改。请帮忙。
  • 您需要差值还是最大值?如果存在差异,则所有输出值将减少 1 天,例如 21,23,26。如果需要,您可以尝试 @mansi 查询并稍作改动。

标签: mysql join


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多