Comment utiliser par groupe, ayant, et de l`ordre par des clauses sql

SQL vous donne des options pour récupérer, analyser et afficher les informations dont vous avez besoin avec le GROUP BY, HAVING et ORDER BY clauses. Voici quelques exemples de la façon dont vous pouvez les utiliser.

Clauses GROUP BY

Parfois, au lieu de récupérer les dossiers individuels, vous voulez savoir quelque chose au sujet d`un groupe d`enregistrements. le PAR GROUPE l`article est l`outil dont vous avez besoin.

Supposons que vous êtes le directeur des ventes d`un autre endroit, et vous voulez regarder la performance de votre force de vente. Si vous faites simple SÉLECTIONNER, tels que la requête suivante:

SELECT InvoiceNo, SaleDate, Salesperson, TotalSaleFROM SALES-

Ce résultat vous donne une idée de la façon dont vos vendeurs font parce que peu de ventes totales sont en cause. Cependant, dans la vie réelle, une entreprise aurait beaucoup plus de ventes - et il ne serait pas si facile de dire si les objectifs de vente ont été atteints.

Pour ce faire, l`analyse réelle, vous pouvez combiner les PAR GROUPE clause avec l`un des agrégat (également appelées fonctions Les fonctions définies) Pour obtenir une image quantitative de la performance des ventes. Par exemple, vous pouvez voir quel vendeur vend plus des articles de haute billets rentables en utilisant la moyenne (AVG) Fonction comme suit:

SELECT Salesperson, AVG (TotalSale) à partir de SALESGROUP PAR Salesperson-

L`exécution de la requête avec un système de gestion de bases de données différentes récupérerait le même résultat, mais peut paraître un peu différent.

La valeur moyenne des ventes de Bennett est considérablement plus élevé que celui des deux autres vendeurs. Vous comparez les ventes totales avec une requête similaire:

Video: Group by in sql server - Part 11

SELECT Salesperson, SUM (TotalSale) à partir de SALESGROUP PAR Salesperson-

Bennett a également le plus total des ventes, ce qui est conforme à avoir la moyenne des ventes les plus élevées.

HAVING

Vous pouvez analyser les données groupées plus loin en utilisant la AYANT clause. le AYANT l`article est un filtre qui agit semblable à un clause, mais sur des groupes de lignes plutôt que sur des lignes individuelles. Pour illustrer la fonction du AYANT clause, supposons que le directeur des ventes considère Bennett comme dans une classe par lui-même.

Video: SQL: Group By, Having, Min, Max Sum

Sa performance fausse les données globales pour les autres vendeurs. (Aha -. Une courbe briseur) Vous pouvez exclure les ventes de Bennett à partir des données regroupées en utilisant un AYANT article comme suit:

SELECT Salesperson, SUM (TotalSale) à partir de SALESGROUP PAR SalespersonHAVING Salesperson lt; gt; `Bennett`-

Seules les lignes où le vendeur n`est pas Bennett sont considérés.

ORDER BY clauses

Utilisez le COMMANDÉ PAR clause pour afficher la table de sortie d`une requête dans l`ordre croissant ou décroissant par ordre alphabétique. Tandis que le PAR GROUPE l`article rassemble les lignes en groupes et trie les groupes dans l`ordre alphabétique, COMMANDÉ PAR trie les lignes individuelles. le COMMANDÉ PAR la clause doit être la dernière clause que vous spécifiez dans une requête.

Si la requête contient également PAR GROUPE clause, la clause premier dispose les lignes de sortie en groupes. le COMMANDÉ PAR clause trie ensuite les rangées dans chaque groupe. Si vous n`avez pas PAR GROUPE l`article, la déclaration considère toute la table en tant que groupe, et COMMANDÉ PAR clause trie toutes les lignes en fonction de la colonne (ou colonnes) que le COMMANDÉ PAR clause précise.

Pour illustrer ce point, prendre en compte les données de la table SALES. La table SALES contient des colonnes pour InvoiceNo, Date de vente, Vendeur, et TotalSale. Si vous utilisez l`exemple suivant, vous voyez toutes les données de la table SALES - mais dans un ordre arbitraire:

SELECT * FROM SALES -

Dans une mise en œuvre, cela peut être l`ordre dans lequel vous avez inséré les lignes de la table- dans une autre mise en œuvre, l`ordre peut être que des mises à jour les plus récentes. L`ordre peut également changer de façon inattendue si quelqu`un physiquement réorganise la base de données. C`est une raison pour laquelle il est généralement une bonne idée de spécifier l`ordre dans lequel vous voulez les lignes.

Vous pouvez, par exemple, veulent voir les lignes dans l`ordre par la Date de vente comme ça:

SELECT * FROM Commande par SaleDate -

Cet exemple renvoie toutes les lignes de la table de vente afin de Date de vente.

Video: Langage SQL niveau I (Débutant)

Pour les lignes avec le même Date de vente, l`ordre par défaut dépend de la mise en œuvre. Vous pouvez toutefois spécifier comment trier les lignes qui partagent le même Date de vente. Vous pouvez voir les ventes pour chaque Date de vente dans l`ordre par InvoiceNo, comme suit:

SELECT * FROM SALES ORDER BY SaleDate, InvoiceNo -

Cet exemple ordonne d`abord les ventes de Date de vente- puis pour chaque Date de vente, il ordonne les ventes de InvoiceNo. Mais ne confondez pas cet exemple avec la requête suivante:

SELECT * FROM SALES ORDER BY InvoiceNo, SaleDate -

Cette première requête ordonne la vente par INVOICE_NO. Ensuite, pour chaque autre InvoiceNo, la requête ordonne la vente par Date de vente. Ce ne sera probablement pas donné le résultat que vous voulez, car il est peu probable que plusieurs dates de vente existeront pour un seul numéro de facture.

La requête suivante est un autre exemple de la façon dont SQL peut renvoyer des données:

SELECT * FROM SALES ORDER BY Salesperson, SaleDate -

Cet exemple de premier ordre Vendeur puis par Date de vente. Une fois que vous regardez les données dans cet ordre, vous pouvez l`inverser, comme suit:

SELECT * FROM SALES ORDER BY SaleDate, Salesperson -

Cet exemple ordonne d`abord les lignes par Date de vente puis par Vendeur.

Tous ces exemples sont en ordonnant croissant (ASC) L`ordre, ce qui est de l`ordre de tri par défaut. Le dernier SÉLECTIONNER montre tout d`abord les ventes antérieures - et, dans une date donnée, les ventes d`un « Adams » avant `Boulanger`. Si vous préférez descendre (DESC) Commande, vous pouvez spécifier cet ordre pour une ou plusieurs des colonnes de commande, comme suit:

SELECT * FROM salesOrder PAR SaleDate DESC, Salesperson ASC -

Cet exemple spécifie un ordre décroissant pour les dates de vente, montrant les premières ventes les plus récentes, et un ordre croissant pour les vendeurs, les mettre dans l`ordre alphabétique. Cela devrait vous donner une meilleure idée de la façon dont la performance de Bennett empile contre celle des autres vendeurs.

Articles connexes