SQL Server: Moyenne d'impulsions par heure et jour de la semaine
Arrière-plan
J'ai une table dans un environnement SQL Server qui contient un journal d'activité variés que je suis suivi. Journal particulier les éléments de codes uniques de catégoriser ce que l'activité prend de la place et un champ datetime pistes lorsque cette activité a eu lieu.
Problème
Je voudrais, à l'aide d'une seule requête ou une procédure stockée, obtenir une moyenne horaire compte de l'activité, regroupés par jour de la semaine. Exemple:
Day | Hour | Average Count
-------------------------------
Monday | 8 | 5
Monday | 9 | 5
Monday | 10 | 9
...
Tuesday | 8 | 4
Tuesday | 9 | 3
...etc
Droit maintenant, j'ai une requête de configuration qui crache le nombre de comptes par heure par jour, mais mon problème est de prendre un pas de plus et d'obtenir en moyenne par jour de la semaine. Voici ma requête:
SELECT CAST([time] AS date) AS ForDate,
DATEPART(hour, [time]) AS OnHour,
COUNT(*) AS Totals
FROM [log] WHERE [code] = 'tib_imp.8'
GROUP BY CAST(time AS date),
DATEPART(hour,[time])
ORDER BY ForDate Asc, OnHour Asc
Des suggestions quant à la façon dont je peux l'accomplir?
Merci d'avance!
- Juste group by semaine.
- Sera que la moyenne de la numération si?
- Non, si vous voulez faire la moyenne d'un comte, alors vous aurez à exécuter d'abord comte, puis exécutez une moyenne sur les résultats:
select field, avg(countField) from ( select field, count(*) as countField group by field) result group by field
- Si vous fournissez une source de données (par exemple, comment vous avez obtenu 5) nous aurons une meilleure idée de exactement comment vous souhaitez obtenir des totaux, des moyennes, ou des moyennes de totaux. Le mot problème est un peu ambigu et sans source de données, il est difficile de déterminer où 5,5,9 etc. viennent de.
Vous devez vous connecter pour publier un commentaire.
Deviner ici:
Encore une fois, l'absence de données, je pourrais de nouveau être en jetant une poignée de boue sur le mur et en espérant qu'il colle, mais peut-être que vous avez besoin est:
Cela aussi va produire entier à base de moyennes, de sorte que vous pouvez jeter les Totaux alias sur la requête interne à la DÉCIMALE(quelque chose quelque chose).
ForDate
plusieurs fois, mais c'est un alias que vous avez créé dans laSELECT
de sorte que vous ne pouvez pas faire référence qu'. Vous êtes également en manque une virgule avant le dernierGROUP BY
colonne à l'intérieur de la CTE.