Ce este Sinele în Python: Exemple din lumea reală
Ce este Sinele în Python: Exemple din lumea reală
În acest tutorial, vom discuta câteva moduri în care putem folosi sau executa clauza HAVING în funcțiile de agregare SQL . Utilizarea acestei clauze în funcțiile de agregare SQL poate ajuta foarte mult la rezumarea datelor.
Clauza HAVING este aproape similară cu instrucțiunea WHERE și poate fi, de asemenea, executată împreună cu aceasta.
Vom discuta despre corelațiile și diferențele lor, oferind exemple pe măsură ce parcurgem acest tutorial.
Cuprins
Instrucțiuni GROUP BY și WHERE în SQL
Pentru primul nostru exemplu, vom discuta despre cum să executăm clauza WHERE și GROUP BY folosind exemplul de tabel de mai jos. Vă rugăm să rețineți că putem folosi clauza WHERE numai cu coloanele existente și nu numai în funcții agregate.
Să presupunem că vrem să obținem vânzările totale ale unui produs pe baza coloanei SaleAmount , unde valoarea este mai mare decât 2 . Pentru a obține rezultatul, comanda noastră ar trebui să fie următoarea:
Mai întâi, selectăm ProductName și cumulăm SaleAmount pentru a obține TotalSales.
Apoi, am folosit instrucțiunea WHERE aici, deoarece încercăm să obținem numai produsele în care SaleAmount este mai mare de 2. Comanda „GROUP BY ProductName” indică faptul că va grupa rândurile sub coloana ProductName într-un singur.
Prin executarea setului nostru de comenzi, vom vedea că din toate datele din coloanele ProductName și SaleAmount , au fost afișate doar Bulb și Fan . Asta pentru că au fost singurii care aveau o valoare de vânzare mai mare de 2.
În acest exemplu, instrucțiunea WHERE este pentru filtrarea rezultatelor cu o coloană existentă, care este SaleAmount . De asemenea, rețineți că instrucțiunea WHERE apare înaintea GROUP BY și nu poate fi folosită pentru a filtra funcțiile agregate. Pe de altă parte, clauza HAVING apare după GROUP BY și este folosită pentru filtrare pe baza unei funcții de agregare.
Clauza GROUP BY și HAVING în SQL
În acest exemplu, vom demonstra diferența dintre instrucțiunea WHERE și clauza HAVING . Vom folosi același obiectiv pe care îl avem în exemplul anterior, astfel încât să putem compara și evalua rezultatele.
Să afișăm mai întâi produsele cu vânzările lor totale folosind comanda de mai jos. După cum puteți vedea, prima noastră comandă este în continuare aceeași cu prima noastră comandă care execută instrucțiunea WHERE .
Dacă vrem să executăm primele două comenzi, vom avea următorul rezultat:
Acum, să presupunem că vrem să afișăm doar produse a căror vânzare totală este mai mare de 5. Nu putem folosi instrucțiunea WHERE deoarece poate fi folosită numai cu coloanele existente. Prin urmare, trebuie să folosim clauza HAVING , deoarece vom filtra dintr-o funcție de agregare.
Observați cum folosim clauza HAVING după GROUP BY, spre deosebire de instrucțiunea WHERE folosită înainte de GROUP BY. Acest lucru se datorează faptului că SQL va grupa înregistrările înainte de a evalua clauza HAVING .
Apoi, să executăm acele comenzi împreună cu HAVING SUM(SaleAmount)>5 . După ce am specificat că vrem să obținem doar acele produse al căror preț total este mai mare de 5, vom observa că în tabelul nostru actual de rezultate, nu vom mai vedea Pen . Asta pentru că totalul său este mai mic de 5 .
Pe scurt, atunci când dorim să filtram datele din tabelul nostru pe baza unei coloane existente, folosim clauza WHERE , în timp ce când dorim să filtram datele dintr-o funcție de agregare, folosim clauza HAVING .
Clauza HAVING și WHERE în SQL Server Management Studio (SSMS)
Acum, vom merge mai departe, discutând și demonstrând cum putem executa clauza HAVING în SQL Server Management Studio (SSMS). De asemenea, vom aborda diferența dintre clauza HAVING și clauza WHERE , oferind exemple.
Mai jos sunt prezentate exemplele noastre de date SalesOrderHeader. Aceste date sunt formate din 100 de rânduri. Pentru exemplul nostru, dorim să obținem TotalSale prin CustomerID unde TotalSale este mai mare de 10000 . Rețineți că vânzarea totală se bazează pe suma valorilor coloanei TotalDue .
Mai întâi, permiteți-mi să demonstrez de ce nu putem folosi clauza WHERE atunci când dorim să filtram pe o funcție agregată pe baza exemplului nostru de mai sus.
Vom folosi exemplul de set de comenzi din imaginea de mai jos. După cum puteți vedea, din punct de vedere tehnic avem același set de comenzi ca cel pe care îl avem din primul nostru exemplu.
Cu toate acestea, când facem clic pe Executare în colțul din stânga sus, va avea ca rezultat o eroare, deoarece nu putem folosi clauza WHERE numai atunci când filtram pe funcția de agregare.
Pentru a corecta eroarea, trebuie să filtram rezultatul folosind clauza HAVING în loc de clauza WHERE . Noul nostru set de comenzi ar trebui să fie similar cu imaginea de mai jos.
Acum, putem vedea că eroarea noastră a fost corectată și conține rezultatele pe CustomerID cu un TotalSale mai mare de 10000 .
Din nou, clauza WHERE este întotdeauna folosită înaintea clauzei GROUP BY , în timp ce clauza HAVING este întotdeauna folosită după o clauză GROUP BY .
Folosind atât clauza HAVING, cât și clauza WHERE în SQL
Pentru acest exemplu, să presupunem că vrem să folosim clauzele WHERE și HAVING în același timp. Să încercăm să obținem TotalSale după CustomerID unde TotalSale este mai mare de 10000 , dar numai cu clienții pentru care TerritoryID este egal cu 1 .
Deoarece dorim să filtram rezultatele cu clienții care au 1 ca TerritoryID , vom folosi clauza WHERE. Deci comanda noastră ar trebui să fie aceeași cu cea anterioară. Din nou, am adăugat o clauză WHERE înaintea clauzei GROUP BY.
Deocamdată, nu putem vedea o mare diferență între rezultatul nostru anterior și cel nou. Cu toate acestea, dacă vă uitați îndeaproape la colțul din dreapta jos, acum avem doar 64 de rânduri față de cel precedent, cu 505 de rânduri de date. Asta pentru că rezultatele sunt filtrate și în funcție de TerritoryID .
Concluzie
Pentru a rezuma, putem folosi doar clauza WHERE cu coloanele existente. Dacă trebuie să filtram cu funcții agregate, trebuie să folosim în schimb clauza HAVING .
Utilizarea clauzei HAVING în funcțiile agregate SQL și exersarea modalităților de a executa clauza HAVING și clauza WHERE împreună poate oferi utilizatorilor confort atunci când lucrează la un număr mare de date sau înregistrări.
Sper că v-am oferit suficiente informații și înțelegere cu privire la modul de utilizare a clauzei HAVING în funcțiile de agregare SQL. Dacă doriți să aflați mai multe despre acest subiect și despre alte conținuturi conexe, cu siguranță puteți consulta lista de link-uri relevante de mai jos.
Toate cele bune,
Hafiz
Ce este Sinele în Python: Exemple din lumea reală
Veți învăța cum să salvați și să încărcați obiecte dintr-un fișier .rds în R. Acest blog va trata, de asemenea, cum să importați obiecte din R în LuckyTemplates.
În acest tutorial despre limbajul de codare DAX, aflați cum să utilizați funcția GENERATE și cum să schimbați în mod dinamic titlul unei măsuri.
Acest tutorial va acoperi cum să utilizați tehnica Multi Threaded Dynamic Visuals pentru a crea informații din vizualizările dinamice de date din rapoartele dvs.
În acest articol, voi trece prin contextul filtrului. Contextul de filtrare este unul dintre subiectele majore despre care orice utilizator LuckyTemplates ar trebui să învețe inițial.
Vreau să arăt cum serviciul online LuckyTemplates Apps poate ajuta la gestionarea diferitelor rapoarte și informații generate din diverse surse.
Aflați cum să vă calculați modificările marjei de profit folosind tehnici precum măsurarea ramificării și combinarea formulelor DAX în LuckyTemplates.
Acest tutorial va discuta despre ideile de materializare a cache-urilor de date și despre modul în care acestea afectează performanța DAX-ului în furnizarea de rezultate.
Dacă încă utilizați Excel până acum, atunci acesta este cel mai bun moment pentru a începe să utilizați LuckyTemplates pentru nevoile dvs. de raportare a afacerii.
Ce este LuckyTemplates Gateway? Tot ce trebuie să știți