Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi ne puis-je pas exécuter une fonction d'agrégation sur une expression contenant un agrégat, mais je peux le faire en créant une nouvelle instruction select autour d'elle ?

SUM() dans votre exemple est un non-op - SUM() d'un COUNT() signifie la même chose que juste COUNT(). Ainsi, aucune de vos requêtes d'exemple ne semble faire quoi que ce soit d'utile.

Il me semble que l'imbrication des agrégats n'aurait de sens que si vous vouliez appliquer deux agrégations différentes - c'est-à-dire GROUP BY sur différents ensembles de colonnes. Pour spécifier deux agrégations différentes, vous devez utiliser la fonction GROUPING SETS ou la fonction SUM() OVER. Peut-être que si vous expliquez ce que vous voulez réaliser, quelqu'un pourrait vous montrer comment.