SQL:select语句中的聚合函数,其中包含group by子句的连接

时间:2017-10-08 20:05:34

标签: mysql sql join group-by aggregate-functions

我有两个包含以下属性的表:

t1                               t2
source    domain     date           rank     domain     date 
---       ---        ---            ---      ---        ---
A        google    2008-10-24        1      google    2007-10-20
A        facebook  2010-05-17        1      google    2009-02-21
B        google    2007-05-14        2      facebook  2008-04-13
B        google    2012-01-05        2      facebook  2012-09-12
B        facebook  2014-03-23        2      facebook  2015-04-01  

我正在尝试查找domaint2中每个date的第一次(最早)出现的日期差异,其中t1首次出现(基于select t2.domain, datediff(min(t1.date),min(t2.date)) from t1 join t2 on t1.domain = t2.domain group by t2.domain ){{1} }}

以下查询给出了我所需的结果:

select avg(datediff(min(t1.date),min(t2.date))) ...

现在,如果我想计算所有域中的日期差异的平均值(仅针对它们的第一次出现),则此部分在select语句中给出错误(查询的其余部分与上面相同):
<登记/>      source

知道如何纠正错误(组功能的无效使用)吗?
另外,我想按source avg_datediff --- --- A some_value B some_value 计算平均日期差异组。输出应该如下:

function DropDownMenuNavigation() {
    document.getElementById("DropDownMenuNav").classList.toggle("show");
    document.getElementById('DropDownMenuChart').classList.remove('show');
}

就像上面一样,对于给定源中的多个相同域,我需要在计算平均日期差异时仅考虑该源的最早域的日期。

1 个答案:

答案 0 :(得分:2)

使用子查询:

select avg(days)
from (select t2.domain, datediff(min(t1.date), min(t2.date)) as days 
      from t1 join
           t2 
           on t1.domain = t2.domain 
      group by t2.domain
     ) tt;