簡體   English   中英

SQL:select語句中的聚合函數,具有涉及group by子句的聯接

[英]SQL: aggregate function in select statement with a join involving group by clause

我有兩個具有以下屬性的表:

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM