Difficulté à nouveau sur les statistics sur datatables basées sur d'autres sets de données.
J'ai une list de clients. comme le suivant:
CustomerID Value Date 1 3 01/01/2017 2 2 01/02/2017 3 1 01/02/2017 1 5 01/04/2017 1 6 01/04/2017 2 1 01/04/2017 2 2 01/04/2017
Je souhaite get une moyenne pour une plage de dates pour le client 1 les jours où le client 2 a également des valeurs. Quelqu'un at-il des idées?
Exemple
Select avg(value) from Table where customerid=1 and (customer 2 values are not blank) and date between '01/01/2017' and '01/31/2017'
J'utilise SQL Server Express 2012.
Une autre option
Select AvgValue = Avg(Value+0.0) -- Remove +0.0 if you want an INT From YourTable Where CustomerID = 1 and Date in (Select Distinct Date from YourTable Where CustomerID=2)
Résultats
AvgValue 5.500000
Vous pouvez sélectionner les dates en utilisant ou in
et ensuite calculer la moyenne:
select avg(value) from datatbl t where customerid = 1 and exists (select 1 from datatbl t2 where t2.customerId = 2 and t2.date = t.date);
Si vous voulez la moyenne par date , incluez le group by date
.