Fonction d'agrégation SQL Clause where
Dans un test à l'université, il y avait une question; est-il possible d'utiliser une fonction d'agrégation dans le SQL WHERE
clause.
J'ai toujours pensé que ce n'est pas possible et je ne peux pas trouver un exemple de la manière dont il serait possible. Mais ma réponse a été marquée faux et maintenant, je veux savoir dans quels cas il est possible d'utiliser une fonction d'agrégation dans le WHERE
. Aussi, si il n'est pas possible, il serait bien d'obtenir un lien à la spécification où il est décrit.
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas mentionné le SGBD. En supposant que vous utilisez MS SQL-Server, j'ai trouvé un T-SQL message d'Erreur est explicite:
http://www.sql-server-performance.com/
Et un exemple qu'il est possible dans une sous-requête.
Afficher tous les clients et le plus petit de l'ordre pour ceux qui en ont 5 ou plus de commandes (et NULL pour les autres):
Mise à JOUR.
Ci-dessus fonctionne dans les deux SQL-Server et MySQL, mais il ne renvoie pas le résultat que j'attendais. Le suivant est plus proche. Je suppose que cela a à voir avec le fait que le domaine
customerid
, Regroupés et utilisés dans la requête-une sous-requête de jointure est dans le premier cas, la CLÉ PRIMAIRE de la table externe et dans le second cas, il n'est pas.Afficher tous les id des clients et du nombre de commandes pour ceux qui en ont 5 ou plus de commandes (et NULL pour les autres):
AVOIR, c'est comme avec les fonctions d'agrégation, ou vous pouvez utiliser une sous-requête.
Ou
HAVING
la bonne réponse à cette question 😉Vous ne pouvez pas utiliser un agrégat directement dans une clause where; c'est ce que les clauses sont pour.
Vous pouvez utiliser une sous-requête qui contient un agrégat dans la clause where.
Mise à JOUR de la requête:
Il va sélectionner tous les mais la dernière ligne de la table t.
SELECT id FROM t WHERE id < (SELECT MAX(id) FROM t)
Voir plus lien ci-dessous:
http://www.w3resource.com/sql/aggregate-functions/count-having.php#sthash.90csRM4I.dpuf%5D%5B1%5D
appelez-moi si aucune requête:85110 51548
http://www.w3resource.com/sql/aggregate-functions/count-having.php
Une autre solution est de Déplacer le total fuction Scalaires Fonction Définie par l'Utilisateur
Créer Votre Fonction:
Utilisation de la Fonction dans la Clause where
Références:
1.
2.
Espoir aide à quelqu'un.