Je dois trouver la moyenne hebdomadaire du tableau ci-dessous (seulement les jours ouvrables - du lundi au vendredi). Le numéro que je recherche à moyenner est AVAI_NUM. Je dois calculer la moyenne de AVAI_NUM pour chaque semaine dans la période donnée.
Exemple : Si la période est janvier 2016 :
déclarer @dDateFrom date = cast('2016-01-01' as date)
déclarer @dDateTo date = cast('2016-01-31' as date)
Le tableau ressemble à ceci :
déclarer @scavai table
(
avai_key int,
avai_dat date,
avai_num int
)
Remplir le tableau avec des données :
insérer dans @scavai(avai_Key, avai_dat, avai_num)
sélectionner 1, cast('2016-01-01' as date), 3
union all
sélectionner 1, cast('2016-01-02' as date), 2
union all
sélectionner 1, cast('2016-01-03' as date), 5
union all
sélectionner 1, cast('2016-01-04' as date), 6
union all
sélectionner 1, cast('2016-01-05' as date), 1
union all
sélectionner 1, cast('2016-01-06' as date), 8
union all
sélectionner 1, cast('2016-01-07' as date), 4
union all
sélectionner 1, cast('2016-01-08' as date), 3
union all
sélectionner 1, cast('2016-01-09' as date), 2
union all
sélectionner 1, cast('2016-01-10' as date), 1
union all
sélectionner 1, cast('2016-01-11' as date), 9
union all
sélectionner 1, cast('2016-01-12' as date), 7
union all
sélectionner 1, cast('2016-01-13' as date), 3
union all
sélectionner 1, cast('2016-01-14' as date), 8
union all
sélectionner 1, cast('2016-01-15' as date), 3
union all
sélectionner 1, cast('2016-01-16' as date), 2
union all
sélectionner 1, cast('2016-01-17' as date), 3
union all
sélectionner 1, cast('2016-01-18' as date), 1
union all
sélectionner 1, cast('2016-01-19' as date), 4
union all
sélectionner 1, cast('2016-01-20' as date), 5
union all
sélectionner 1, cast('2016-01-21' as date), 7
union all
sélectionner 1, cast('2016-01-22' as date), 3
union all
sélectionner 1, cast('2016-01-23' as date), 3
union all
sélectionner 1, cast('2016-01-25' as date), 3
union all
sélectionner 1, cast('2016-01-26' as date), 3
Je sais comment calculer le nombre de semaines dans la période donnée :
sélectionner DATEDIFF(ww, '2016-01-01', '2016-01-31')
Mais je ne sais pas comment calculer AVAI_NUM pour les jours ouvrables de chaque semaine et diviser cela par le nombre de jours de la semaine en particulier, puis résumer tout cela et diviser par le nombre de semaines ?
0 votes
Veillez à corriger AVG(avai_num) sur (partition par datepart(semaine, avai_dat) ordre par avai_dat)
0 votes
@nazark - pouvez-vous s'il vous plaît poster ceci comme réponse? (requête complète sur l'exemple si possible). Merci.
0 votes
Posté mais pas sûr du résultat que vous recherchez?