SQL:by子句

SQL:by子句

问题描述:

与联接涉及组select语句的集合函数我有两个表具有以下属性:SQL:by子句

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 

我试图找到的时间差的B/W的第一(最早)发生每个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 

现在,如果我想计算在所有领域的时间差的平均值(仅适用于第一次出现时),这部分给出了一个错误select语句(查询的其余部分与上面相同):

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

任何想法如何纠正错误(无效的使用组函数)在这里?
此外,我想通过source来计算平均日期差异组。使得输出应该是这样的:

source  avg_datediff 
---  --- 
A   some_value 
B   some_value 

就像上面,在给定的源的多个相同的域名,我需要考虑最早域的日期只有源,计算平均日差的时候。

使用子查询:

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; 
+0

谢谢,它的工作。对于我的第二个查询,你会提出一个子查询吗? – SaadH

+0

@Saadh。 。 。你应该在每个问题中只问一个问题。我认为这个结构是'avg(datediff(t1.date,t2.date)''。 –