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的第一(最早)发生每个domain
在t2
与他们的第一次出现(基于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;
谢谢,它的工作。对于我的第二个查询,你会提出一个子查询吗? – SaadH
@Saadh。 。 。你应该在每个问题中只问一个问题。我认为这个结构是'avg(datediff(t1.date,t2.date)''。 –