regarder vidéo
ainsi que la clause « Où » vous permet de sélectionner (ou rejeter) enregistrements individuels; La clause « ayant » vous permet de sélectionner (ou de rejeter) un groupe d’enregistrements.
Si nous voulons savoir combien de livres regroupés par éditorial, nous utilisons les instructions suivantes déjà apprises:
select editorial, count(*) from libros group by editorial;
Si nous voulons savoir combien de livres regroupés par éditorial mais que seuls des groupes, par exemple ceux qui renvoient une valeur supérieure à 2, nous utilisons les instructions suivantes:
select editorial, count(*) from libros group by editorial having count(*)>2;
« ayant » est utilisé, suivi de la condition de recherche, pour sélectionner certaines lignes retournées par la clause « Groupe par ».
Voir d’autres exemples. Nous voulons que les prix moyens regroupés par éditorial, mais seuls les groupes dont la moyenne dépasse 25 pesos:
select editorial, avg(precio) from libros group by editorial having avg(precio)>25;
Dans certains cas, il est possible de confondre les clauses « où « ET AYANT « . Nous voulons compter les journaux regroupés par éditorial sans prendre en compte l’éditeur « planeta ».
analyser les phrases suivantes:
select editorial, count(*) from libros where editorial'Planeta' group by editorial; select editorial, count(*) from libros group by editorial having editorial'Planeta';
Les deux renvoient le même résultat, mais ils sont différents. Le premier, sélectionnez Tous les enregistrements en rejetant la « planète » éditoriale, puis les groupes pour les compter. La seconde, sélectionne tous les enregistrements, les regroupe de les compter et de rejeter enfin la ligne avec le compte correspondant à la maison d’édition « Planet ».
Nous ne devrions pas confondre la clause « Là » avec la clause « Avoir » ; Le premier établit des conditions pour la sélection des enregistrements d’un « Select »; La seconde définit les conditions pour la sélection des enregistrements d’un « groupe par » Sortie.
Voir d’autres exemples en combinant « où » et « avoir ». Nous voulons le nombre de livres, sans envisager le prix NULL, regroupé par éditorial, sans envisager l’éditeur « planète »:
select editorial, count(*) from libros where precio is not null group by editorial having editorial'Planeta';
ici, sélectionnez les enregistrements de rejet ceux qui ne respectent pas la condition donnée dans « où », puis les regroupent par « éditorial » et rejette finalement les groupes qui ne respectent pas la condition donnée dans le « Havir ».
La clause est « Ayant » utilisé avec les fonctions de groupe, cela ne peut pas faire la clause « où ». Par exemple, nous voulons que les prix moyens regroupés par éditorial, de ces éditoriaux qui ont plus de 2 livres:
dans une clause « ayant » » termes. Lorsque vous utilisez plusieurs conditions, vous devez les combiner avec des opérateurs logiques (et ou non).
Nous pouvons trouver la valeur la plus élevée des livres regroupés et triés par éditorial et sélectionnez les lignes ayant une valeur Moins de 100 et supérieure à 30:
select editorial, max(precio) as mayor from libros group by editorial having min(precio)30 order by editorial;
Ainsi, nous utilisons « l’avoir » de clouse pour limiter les lignes qui renvoient un « groupe par ». Cela va toujours après la clause « Groupe par » et avant la clause « Ordre par » si elle l’a.