Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr
W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.
W tym samouczku omówimy kilka sposobów wykorzystania lub wykonania klauzuli HAVING w funkcjach agregujących SQL . Użycie tej klauzuli w funkcjach agregujących SQL może znacznie pomóc w podsumowaniu danych.
Klauzula HAVING jest prawie podobna do instrukcji WHERE i może być również wykonywana razem z nią.
Omówimy ich korelacje i różnice, podając przykłady podczas korzystania z tego samouczka.
Spis treści
Instrukcje GROUP BY i WHERE w języku SQL
W naszym pierwszym przykładzie omówimy, jak wykonać klauzulę WHERE i GROUP BY, korzystając z poniższej przykładowej tabeli. Należy pamiętać, że klauzuli WHERE możemy używać tylko z istniejącymi kolumnami, a nie tylko w funkcjach agregujących.
Załóżmy, że chcemy uzyskać łączną sprzedaż produktu na podstawie jego kolumny SaleAmount , w której wartość jest większa niż 2 . Aby uzyskać wynik, nasze polecenie powinno brzmieć następująco:
Najpierw wybieramy ProductName i agregujemy SaleAmount , aby uzyskać TotalSales .
Następnie użyliśmy tutaj instrukcji WHERE , ponieważ próbujemy pobrać tylko te produkty, których SaleAmount jest większa niż 2. Polecenie „GROUP BY ProductName” wskazuje, że zgrupuje wiersze w kolumnie ProductName w jeden.
Wykonując nasz zestaw poleceń, zobaczymy, że spośród wszystkich danych w kolumnach ProductName i SaleAmount wyświetlane były tylko Bulb i Fan . To dlatego, że jako jedyni mieli wartość SaleAmount większą niż 2.
W tym przykładzie instrukcja WHERE służy do filtrowania wyników z istniejącą kolumną, którą jest nasza SaleAmount . Należy również zauważyć, że instrukcja WHERE pojawia się przed instrukcją GROUP BY i nie można jej używać do filtrowania funkcji agregujących. Z drugiej strony klauzula HAVING pojawia się po GROUP BY i służy do filtrowania na podstawie funkcji agregującej.
Klauzula GROUP BY i HAVING w języku SQL
W tym przykładzie zademonstrujemy różnicę między instrukcją WHERE a klauzulą HAVING . Użyjemy tego samego celu, co w poprzednim przykładzie, abyśmy mogli porównać i ocenić wyniki.
Najpierw wyświetlmy produkty z ich całkowitą sprzedażą za pomocą poniższego polecenia. Jak widać, nasze pierwsze polecenie jest nadal takie samo, jak nasze pierwsze polecenie wykonujące instrukcję WHERE .
Jeśli mamy wykonać nasze pierwsze dwa polecenia, otrzymamy następujący wynik:
Załóżmy teraz, że chcemy wyświetlić tylko produkty, których łączna sprzedaż przekracza 5. Nie możemy użyć instrukcji WHERE , ponieważ można jej używać tylko z istniejącymi kolumnami. Dlatego musimy użyć klauzuli HAVING , ponieważ będziemy filtrować z funkcji agregującej.
Zwróć uwagę, jak używamy klauzuli HAVING po GROUP BY , w przeciwieństwie do instrukcji WHERE używanej przed GROUP BY. Wynika to z faktu, że SQL zgrupuje rekordy przed oceną klauzuli HAVING .
Następnie wykonajmy te polecenia wraz z HAVING SUM(SaleAmount)>5 . Po określeniu, że chcemy otrzymać tylko te produkty, których łączna cena jest większa niż 5, zauważymy, że w naszej aktualnej tabeli wyników nie zobaczymy już Pióra . To dlatego, że jego suma jest mniejsza niż 5 .
Krótko mówiąc, gdy chcemy filtrować dane z naszej tabeli na podstawie istniejącej kolumny, używamy klauzuli WHERE , natomiast gdy chcemy filtrować dane z funkcji agregującej, używamy klauzuli HAVING .
Klauzula HAVING and WHERE w SQL Server Management Studio (SSMS)
Teraz przejdziemy do przodu, omawiając i demonstrując, w jaki sposób możemy wykonać klauzulę HAVING w SQL Server Management Studio (SSMS). Zajmiemy się również różnicą między klauzulą HAVING a klauzulą WHERE , podając przykłady.
Poniżej pokazano nasze przykładowe dane SalesOrderHeader. Te dane składają się ze 100 wierszy. W naszym przykładzie chcemy uzyskać TotalSale według CustomerID , gdzie TotalSale jest większy niż 10000 . Należy zauważyć, że łączna sprzedaż jest oparta na sumie wartości kolumn TotalDue .
Najpierw pozwól mi zademonstrować, dlaczego nie możemy użyć klauzuli WHERE , gdy chcemy filtrować funkcję agregującą w oparciu o nasz przykład powyżej.
Będziemy używać przykładowego zestawu poleceń z obrazka poniżej. Jak widać, technicznie mamy ten sam zestaw poleceń, co w naszym pierwszym przykładzie.
Jednak gdy klikniemy Wykonaj w lewym górnym rogu, spowoduje to błąd, ponieważ nie możemy użyć samej klauzuli WHERE podczas filtrowania funkcji agregującej.
Aby poprawić błąd, musimy przefiltrować wynik, używając klauzuli HAVING zamiast klauzuli WHERE . Nasz nowy zestaw poleceń powinien być podobny do poniższego obrazka.
Teraz widzimy, że nasz błąd został poprawiony i zawiera wyniki na CustomerID z TotalSale większym niż 10000 .
Ponownie, klauzula WHERE jest zawsze używana przed klauzulą GROUP BY , podczas gdy klauzula HAVING jest zawsze używana po klauzuli GROUP BY .
Używanie zarówno klauzuli HAVING, jak i klauzuli WHERE w języku SQL
W tym przykładzie załóżmy, że chcemy jednocześnie użyć klauzuli WHERE i HAVING . Spróbujmy uzyskać TotalSale według CustomerID , gdzie TotalSale jest większy niż 10000 , ale tylko z klientami, których TerritoryID jest równy 1 .
Ponieważ chcemy filtrować wyniki według klientów, których identyfikatorem terytorium jest 1 , użyjemy klauzuli WHERE. Więc nasze polecenie powinno być takie samo jak nasze poprzednie. Ponownie dodaliśmy klauzulę WHERE przed klauzulą GROUP BY.
Na razie nie widzimy dużej różnicy między naszym poprzednim wynikiem a tym nowym. Jeśli jednak przyjrzysz się uważnie prawemu dolnemu rogowi, mamy teraz tylko 64 wiersze w porównaniu do poprzedniego z 505 wierszami danych. To dlatego, że wyniki są filtrowane również na podstawie ich identyfikatora terytorium .
Wniosek
Podsumowując, klauzuli WHERE możemy używać tylko z istniejącymi kolumnami. Jeśli musimy filtrować za pomocą funkcji agregowanych, musimy zamiast tego użyć klauzuli HAVING .
Używanie klauzuli HAVING w funkcjach agregujących SQL i ćwiczenie sposobów jednoczesnego wykonywania klauzuli HAVING i klauzuli WHERE może zapewnić użytkownikom wygodę podczas pracy z dużą liczbą danych lub rekordów.
Mam nadzieję, że dostarczyłem ci wystarczających informacji i zrozumienia, jak używać klauzuli HAVING w funkcjach agregujących SQL. Jeśli chcesz dowiedzieć się więcej na ten temat i inne powiązane treści, z pewnością możesz sprawdzić listę odpowiednich linków poniżej.
Wszystkiego najlepszego,
Hafiz
W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.
Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.
Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.
Czym jest self w Pythonie: przykłady z życia wzięte
Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.
Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.
W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.
W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.
Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.
Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.