J'ai deux tables avec des attributs suivants:SQL: fonction d'agrégation dans l'instruction select avec une jointure impliquant clause group 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
Je suis en train de trouver la différence de date b/w la première occurrence (au plus tôt) de chaque domain
dans t2
avec leur première occurrence (basée sur) dans t1
.
La requête suivante me donne le résultat requis:
select t2.domain, datediff(min(t1.date),min(t2.date))
from t1 join t2
on t1.domain = t2.domain
group by t2.domain
Maintenant, si je veux calculer la moyenne de la date différence dans tous les domaines (uniquement pour leur première occurrence), cette partie donne une erreur instruction select (le reste de la requête est comme ci-dessus):
select avg(datediff(min(t1.date),min(t2.date))) ...
Toute idée comment corriger l'erreur (utilisation incorrecte de la fonction de groupe) ici?
En outre, je veux calculer le groupe de différence de date moyenne par source
. Telle que la sortie devrait être comme:
source avg_datediff
--- ---
A some_value
B some_value
Tout comme ci-dessus, pour plusieurs mêmes domaines dans une source donnée, je dois considérer la date du domaine plus tôt pour cette source que, lors du calcul de différence de date avg.
Merci, ça a marché. Pour ma deuxième requête, suggérez-vous également une sous-requête? – SaadH
@Saadh. . . Vous devriez vraiment seulement poser une question dans chaque question. Je pense que la construction est 'avg (datediff (t1.date, t2.date)'. –