Grundlegendes zu BigQuery Group By-Statement und COUNT-Funktion

August 23, 2024
Kapitel 5: Grundlegendes zu BigQuery Group By-Statement und COUNT-Funktion

Einführung

Die Anweisung `GROUP BY` ist ein grundlegender Aspekt von SQL, der für die Datenanalyse und Manipulation unerlässlich ist. Durch die Gruppierung von Daten und die Anwendung von Aggregationsfunktionen können wir aussagekräftige Erkenntnisse aus großen Datensätzen ableiten. In diesem Blog werden wir uns mit der `GROUP BY`-Anweisung und der `COUNT`-Funktion in BigQuery befassen, jedes Konzept Schritt für Schritt aufschlüsseln und praktische Beispielabfragen zur Veranschaulichung ihrer Verwendung bereitstellen.

1. Verstehen Sie `SELECT DISTINCT` und `GROUP BY`


Die Anweisung `SELECT DISTINCT` wird verwendet, um eindeutige Werte aus einer Spalte abzurufen und doppelte Einträge herauszufiltern. Im Gegensatz dazu gruppiert `GROUP BY` Zeilen, die dieselben Werte in bestimmten Spalten haben, und ermöglicht die Aggregation von Daten, wie das Summieren oder Zählen von Vorkommen.

Beispielabfrage mit SELECT DISTINCT

SELECT 
    DISTINCT subscriber_type
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
ORDER BY 1

Ergebnis mit SELECT DISTINCT-Funktion abfragen

Diese Abfrage gibt eindeutige Werte aus der Spalte `subscriber_type` zurück und sortiert sie alphabetisch.

2. Grundlegende Verwendung von `GROUP BY`

Das gleiche Ergebnis kann mit der GROUP BY-Funktion erzielt werden.

Beispielabfrage mit GROUP BY-Anweisung

SELECT 
      subscriber_type
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
GROUP BY subscriber_type
ORDER BY 1

Ergebnis mit der GROUP BY-Funktion abfragen



Diese Abfrage gruppiert die Daten nach `subscriber_type` und liefert dieselbe Ausgabe wie die `SELECT DISTINCT`-Abfrage, jedoch mit der Fähigkeit, Daten zu aggregieren.


Obwohl die Ausgabe ähnlich ist, DEUTLICH und GRUPPIEREN NACH arbeiten ganz anders. Das DEUTLICH Die Funktion entfernt doppelte Zeilen aus der Ergebnismenge und stellt sicher, dass nur eindeutige Zeilen basierend auf den angegebenen Spalten zurückgegeben werden. Die GRUPPIEREN NACH Eine Klausel gruppiert Zeilen, die dieselben Werte in bestimmten Spalten haben, und ermöglicht Aggregatfunktionen (z. B. ZÄHLEN, SUMME, DURCHSCHN.), die auf jede Gruppe anzuwenden sind.

In diesem Kapitel konzentrieren wir uns ausschließlich auf die ZÄHLEN Funktion. Wir haben ein separates Kapitel, in dem wir andere Aggregationsfunktionen besprechen, wie SUMME, DURCHSCHN., MAX, und MIN.

3. Zählen von Vorkommen mit `COUNT`

Das obige Abfrageergebnis zeigt alle eindeutigen Abonnententypen, liefert jedoch keine Informationen über die Häufigkeit der einzelnen Typen. An dieser Stelle wird `GROUP BY` nützlich.

Beispiel für eine Abfrage

SELECT 
      subscriber_type, COUNT(*) AS trip_count
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
GROUP BY subscriber_type
ORDER BY 1

Abfrageergebnis mithilfe der GROUP BY-Klausel und der COUNT-Funktion



Diese Abfrage zählt die Anzahl der Vorkommen jedes `subscriber_type` und sortiert die Ergebnisse nach der Anzahl in absteigender Reihenfolge.
Die Ausgabe zeigt die Anzahl der Fahrten für jeden Abonnententyp an, wobei hervorgehoben wird, welcher Typ die meisten Fahrten hat. Dies ist entscheidend für das Verständnis des Nutzerverhaltens und der Trends.

4. Kombinieren von `GROUP BY` mit mehreren Spalten

Beispiel für eine Abfrage

SELECT 
      subscriber_type, 
      COUNT(*) AS trip_count,
      COUNT(duration_sec) AS sum_duration_sec
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
GROUP BY subscriber_type
ORDER BY subscriber_type

Das Abfrageergebnis zeigt die Zeilenanzahl aller in der Tabelle verfügbaren Zeilen sowie die Zeilenanzahl von Dauer_Sek. Die Zeile zählt für beide trip_count und Dauer_Sek sind genau gleich, was darauf hindeutet, dass es keine NULL Werte in der Dauer_Sek Spalte. Wir können dies weiter bestätigen, indem wir eine weitere hinzufügen ZÄHLEN Funktion zum Zählen der Zeilen, die NULL Werte, falls vorhanden.

SELECT 
      subscriber_type, 
      COUNT(*) AS trip_count,
      COUNT(duration_sec) AS sum_duration_sec,
      COUNT (NULL) AS count_null
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
GROUP BY subscriber_type
ORDER BY subscriber_type

Abfrageergebnis zum Zählen von NULL-Werten

Diese Abfrage bestätigt, dass es keine Zeile gibt, die NULL-Werte enthält.

Es wird interessant sein herauszufinden, welcher Abonnententyp seine Reise von welcher Station aus beginnt. Das können wir erreichen, indem wir BESTELLEN NACH mit trip_count.

SELECT 
      subscriber_type, 
      start_station_name,
      COUNT(*) AS trip_count,
      COUNT(duration_sec) AS sum_duration_sec,
      COUNT (NULL) AS count_null
FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips`
GROUP BY subscriber_type, start_station_name
ORDER BY trip_count DESC

Ergebnis mit der COUNT-Funktion abfragen

Basierend auf unseren Ergebnissen wurden die meisten Reisen von San Francisco Caltrain aus gestartet von nan Abonnententyp, wobei nan bedeutet weder ein Kunde noch ein Abonnent. Wenn Sie das verwenden GRUPPIEREN NACH Klausel, um bestimmte Metriken zu aggregieren, um ein besseres Verständnis Ihrer Daten zu gewinnen. Sie ist entscheidend für das Verständnis Ihres Datensatzes und wird häufig verwendet, insbesondere bei der Datenmodellierung. Darüber hinaus GRUPPIEREN NACH wird oft in Kombination mit Joins und Unterabfragen benötigt.

5. Aggregieren von Daten mit zusätzlichen Spalten

Sehen wir uns einige weitere Beispiele für die GROUP BY-Klausel in Shop-Daten an. Lassen Sie uns zunächst die Typen von seller_channel in unseren order_item-Daten abfragen.

SELECT 
    seller_channel
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
GROUP BY 1
ORDER BY 1

Die Abfrage zeigt verschiedene Arten von Verkäuferkanälen, die in der Tabelle order_item verfügbar sind.

Einfache Abfrage mit GROUP By in der order_item-Tabelle

SELECT 
    seller_channel,
    COUNT(*) AS count_rows
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
GROUP BY 1
ORDER BY 1

Abfrageergebnis, das die Zeilenanzahl des Verkäuferkanals in der Bestellartikeltabelle anzeigt

Diese Abfrage gruppiert nach Verkäuferkanälen und zählt die Anzahl der Zeilen für jeden Verkäuferkanal. Die Ergebnisse zeigen, welche Verkäuferkanäle am aktivsten sind und wie häufig diese Verkäuferkanäle genutzt werden. Interessanterweise haben eBay und Limango jeweils nur eine Zeile, was darauf hindeutet, dass diese Verkäuferkanäle entweder nicht aktiv sind oder erst kürzlich gestartet wurden. Diese Art von Erkenntnissen ist unglaublich wichtig, wenn Sie versuchen, Ihre Daten zu verstehen.

Lassen Sie uns noch ein paar Überprüfungen durchführen, um die Daten noch besser zu verstehen...

SELECT 
    seller_channel,
    COUNT(*) AS count_rows,
    COUNT(order_number) AS count_order_number,
    COUNT (discount_code) AS count_discount_code
 FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
GROUP BY 1
ORDER BY 1


Die Ergebnisse zeigen, welche Vertriebskanäle am aktivsten sind und wie häufig die Rabattcodes verwendet werden, und bieten wertvolle Erkenntnisse für Marketing- und Vertriebsstrategien.

Fazit
Die Anweisung `GROUP BY` in SQL, kombiniert mit Aggregationsfunktionen wie `COUNT`, ist ein leistungsstarkes Tool für die Datenanalyse. Es ermöglicht Ihnen, große Datensätze zu gruppieren und zusammenzufassen und dabei Muster und Erkenntnisse aufzudecken, die für fundierte Entscheidungen unerlässlich sind. Indem Sie diese Konzepte beherrschen und sie auf reale Szenarien anwenden, können Sie das volle Potenzial Ihrer Daten in BigQuery ausschöpfen. Ganz gleich, ob Sie das Nutzerverhalten, die Verkaufsleistung oder betriebliche Kennzahlen analysieren, `GROUP BY` und `COUNT` bilden die Grundlage für effektive datengestützte Entscheidungen.

Abonnieren Sie unseren Newsletter
Danke! Deine Einreichung ist eingegangen!
Hoppla! Beim Absenden des Formulars ist etwas schief gelaufen.