Utilisation percentile_cont avec un “groupe” de tresorerie en T-SQL
Je voudrais utiliser le percentile_cont
fonction permettant d'obtenir des valeurs médianes en T-SQL. Cependant, j'ai aussi besoin d'obtenir des valeurs moyennes. Je voudrais faire quelque chose comme ce qui suit:
SELECT CustomerID ,
AVG(Expenditure) AS MeanSpend , percentile_cont
( .5) WITHIN GROUP(ORDER BY Expenditure) OVER( ) AS MedianSpend
FROM Customers
GROUP BY CustomerID
Cela peut-il être réalisé? Je sais que je peux utiliser la clause OVER pour le groupe de la percentile_cont
résultats...
mais là je suis coincé à l'aide de deux requêtes, ne suis-je pas?
Avez-vous essayé? Je pense que cela fonctionne.
Je l'ai essayé. Voici l'erreur... la Colonne "Dépenses" n'est pas valide dans la liste de sélection, car il n'est pas contenue dans une fonction d'agrégation ou de la clause GROUP BY.
Je l'ai essayé. Voici l'erreur... la Colonne "Dépenses" n'est pas valide dans la liste de sélection, car il n'est pas contenue dans une fonction d'agrégation ou de la clause GROUP BY.
OriginalL'auteur John Chrysostom | 2013-10-23
Vous devez vous connecter pour publier un commentaire.
Juste pensé à elle... dois déposer le groupe par et de donner à la fois des fonctions d'agrégation d'une déclaration.
OriginalL'auteur John Chrysostom
Vous ne pouvez pas utiliser "groupe" avec les fonctions de la fenêtre. Ces fonctions retournent des valeurs agrégées pour chaque ligne. Une façon est d'utiliser "select distinct" pour se débarrasser des lignes en double. Assurez-vous juste la partition de chaque fenêtre en fonction de la non-agrégées colonnes (groupId dans cet exemple).
OriginalL'auteur jumxozizi