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.
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
Diese Abfrage gibt eindeutige Werte aus der Spalte `subscriber_type` zurück und sortiert sie alphabetisch.
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
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
.
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
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.
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
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
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.
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.
SELECT
seller_channel,
COUNT(*) AS count_rows
FROM `dwh-udemy-course.3_dwh_ecommerce.order_item`
GROUP BY 1
ORDER BY 1
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.