Grundlegende Query-Beispiele
Lernen Sie anhand von Beispielen! Hier sind häufige BigQuery-Abfragen für den MCP-Server.
Produkt-Abfragen
Produkt nach SKU finden
-- Suche nach Artikelnummer oder Externe Artikelnummer
SELECT
Artikelnummer,
`Externe Artikelnummer`,
Name,
Brand,
Status
FROM `products.Produkt`
WHERE Artikelnummer = '142300'
OR `Externe Artikelnummer` = '142300'
tip
Überprüfen Sie immer sowohl Artikelnummer als auch Externe Artikelnummer bei der SKU-Suche, da Produkte beide verwenden können.
Aktive Produkte auflisten
SELECT
Name,
Brand,
Preis,
Status
FROM `products.Produkt`
WHERE Status = 'aktiv'
ORDER BY Name
LIMIT 100
Nach Marke suchen
SELECT
Artikelnummer,
Name,
Preis,
Brand
FROM `products.Produkt`
WHERE Brand = 'MLC'
AND Status = 'aktiv'
ORDER BY Preis DESC
Aggregations-Abfragen
Produkte nach Status zählen
SELECT
Status,
COUNT(*) as AnzahlProdukte
FROM `products.Produkt`
GROUP BY Status
ORDER BY AnzahlProdukte DESC
Durchschnittspreis nach Marke
SELECT
Brand,
COUNT(*) as AnzahlProdukte,
AVG(Preis) as DurchschnittsPreis,
MIN(Preis) as MinPreis,
MAX(Preis) as MaxPreis
FROM `products.Produkt`
WHERE Preis IS NOT NULL
GROUP BY Brand
HAVING COUNT(*) >= 5
ORDER BY DurchschnittsPreis DESC
Top 10 teuerste Produkte
SELECT
Name,
Brand,
Preis,
Artikelnummer
FROM `products.Produkt`
WHERE Preis IS NOT NULL
ORDER BY Preis DESC
LIMIT 10
Filter-Abfragen
Produkte in Preisbereich
SELECT
Name,
Brand,
Preis
FROM `products.Produkt`
WHERE Preis BETWEEN 50 AND 150
AND Status = 'aktiv'
ORDER BY Preis
Nach Produktname suchen
-- Groß-/Kleinschreibung unabhängige Suche
SELECT
Artikelnummer,
Name,
Brand
FROM `products.Produkt`
WHERE LOWER(Name) LIKE '%protein%'
LIMIT 50
Mehrere Bedingungen
SELECT
Name,
Brand,
Preis,
Status,
`Rechtlicher Status`
FROM `products.Produkt`
WHERE Brand IN ('MLC', 'Windstar', 'Vital Nutrients')
AND Status = 'aktiv'
AND Preis < 100
ORDER BY Brand, Preis
GTIN-Abfragen
Nach GTIN suchen
SELECT
Artikelnummer,
Name,
GTIN,
`GTIN VPE`,
`GTIN Karton`,
`GTIN Palette`
FROM `products.Produkt`
WHERE GTIN = '4250847198292'
OR `GTIN VPE` = '4250847198292'
OR `GTIN Karton` = '4250847198292'
OR `GTIN Palette` = '4250847198292'
Produkte ohne GTIN
SELECT
Artikelnummer,
Name,
Brand
FROM `products.Produkt`
WHERE GTIN IS NULL
AND Status = 'aktiv'
LIMIT 20
Datums-basierte Abfragen
Kürzlich aktualisierte Produkte
SELECT
Name,
Brand,
`Letzte Aktivität Datum`
FROM `products.Produkt`
WHERE `Letzte Aktivität Datum` >= DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY)
ORDER BY `Letzte Aktivität Datum` DESC
Diesen Monat erstellte Produkte
SELECT
Name,
Erstellungsdatum,
Status
FROM `products.Produkt`
WHERE Erstellungsdatum >= DATE_TRUNC(CURRENT_DATE(), MONTH)
ORDER BY Erstellungsdatum DESC
Lagerbestand-Abfragen
Aktuelle Lagerbestände
SELECT
Name,
Artikelnummer,
`Anzahl im Lager`,
`ETA neuer Wareneingang`,
`Bestätigte Ware Menge`
FROM `products.base_products_inventory`
WHERE `Anzahl im Lager` > 0
ORDER BY `Anzahl im Lager` DESC
LIMIT 20
Produkte mit niedrigem Lagerbestand
SELECT
Name,
Artikelnummer,
`Anzahl im Lager`,
`ETA neuer Wareneingang`
FROM `products.base_products_inventory`
WHERE `Anzahl im Lager` BETWEEN 1 AND 10
ORDER BY `Anzahl im Lager` ASC
Performance-Abfragen
Top-verkaufte Produkte (letzte 90 Tage)
SELECT
p.product_name,
p.brand,
p.sku,
SUM(p.total_units_sold) as GesamtVerkaufteEinheiten,
SUM(p.total_gross_revenue_eur) as GesamtUmsatzEUR
FROM `Flowdata.daily_sku_performance_90d` p
GROUP BY p.product_name, p.brand, p.sku
ORDER BY GesamtVerkaufteEinheiten DESC
LIMIT 20
Umsatz nach Marke (letzte 30 Tage)
SELECT
brand,
COUNT(DISTINCT sku) as AnzahlSKUs,
SUM(total_gross_revenue_eur) as GesamtUmsatzEUR,
AVG(avg_gross_unit_price_eur) as DurchschnittsPreis
FROM `Flowdata.daily_sku_performance_90d`
WHERE order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY brand
ORDER BY GesamtUmsatzEUR DESC
Amazon-spezifische Abfragen
Amazon-aktive Produkte
SELECT
Name,
Artikelnummer,
ASIN,
`Amazon Preis`,
`Amazon MFN Status`,
`Amazon FBA Status`
FROM `products.Produkt`
WHERE ASIN IS NOT NULL
AND (`Amazon MFN Status` = 'Vorrätig' OR `Amazon FBA Status` = 'Aktiv')
ORDER BY `Amazon Preis` DESC
LIMIT 50
Buybox-Analyse
SELECT
Name,
ASIN,
`Amazon Buybox Preis in EUR`,
`Hat Buybox`,
`Amazon Preis Seller Central`
FROM `products.Produkt`
WHERE `Amazon Buybox Preis in EUR` IS NOT NULL
AND ASIN IS NOT NULL
ORDER BY `Hat Buybox` DESC, `Amazon Buybox Preis in EUR` DESC
Interaktive Beispiele
Vorlage zum Ausprobieren!
SELECT
-- Fügen Sie gewünschte Spalten hinzu
Name,
Brand,
Preis,
Status
FROM `products.Produkt`
WHERE
-- Fügen Sie Ihre Bedingungen hinzu
Status = 'aktiv'
-- AND Brand = 'IhreBrand'
-- AND Preis > 0
ORDER BY
-- Wählen Sie Sortierreihenfolge
Preis DESC
LIMIT 10 -- Limit nach Bedarf anpassen
Schnelle Tipps
- Verwenden Sie
--für Kommentare in SQL - Drücken Sie Strg+Leertaste für Autovervollständigung (in manchen Tools)
- Verwenden Sie immer LIMIT beim Testen von Abfragen
- Nutzen Sie Backticks (`) für Spaltennamen mit Leerzeichen
Häufige Muster
NULL-Behandlung
-- Produkte ohne Preise finden
SELECT Name, Brand
FROM `products.Produkt`
WHERE Preis IS NULL
-- NULL-Werte ausschließen
SELECT AVG(Preis) as DurchschnittsPreis
FROM `products.Produkt`
WHERE Preis IS NOT NULL
CASE-Anweisungen
SELECT
Name,
Preis,
CASE
WHEN Preis < 20 THEN 'Günstig'
WHEN Preis < 50 THEN 'Mittelklasse'
ELSE 'Premium'
END as Preiskategorie
FROM `products.Produkt`
WHERE Preis IS NOT NULL
String-Operationen
-- Felder verknüpfen
SELECT
CONCAT(Brand, ' - ', Name) as VollständigerName,
Artikelnummer
FROM `products.Produkt`
-- Teilstring extrahieren
SELECT
Name,
SUBSTR(Artikelnummer, 1, 3) as KategorieCode
FROM `products.Produkt`
Performance-Tipps
1. Verwenden Sie immer Limits beim Testen
-- Gut: Begrenzte Ergebnisse zum Testen
SELECT * FROM `products.Produkt` LIMIT 10
-- Vermeiden: Kann Tausende von Zeilen zurückgeben
SELECT * FROM `products.Produkt`
2. Früh filtern
-- Effizient: Vor dem Join filtern
SELECT p.Name, i.`Anzahl im Lager`
FROM `products.Produkt` p
JOIN `products.base_products_inventory` i ON p.Artikelnummer = i.Artikelnummer
WHERE p.Status = 'aktiv'
-- Weniger effizient: Nach dem Join filtern
SELECT p.Name, i.`Anzahl im Lager`
FROM `products.Produkt` p
JOIN `products.base_products_inventory` i ON p.Artikelnummer = i.Artikelnummer
WHERE p.Status = 'aktiv'
3. Spezifische Spalten verwenden
-- Gut: Nur benötigte Spalten
SELECT Name, Preis FROM `products.Produkt`
-- Vermeiden: Alle Spalten wenn nicht benötigt
SELECT * FROM `products.Produkt`
Deutsche Feldnamen verstehen
Wichtige Übersetzungen
Artikelnummer= SKU/Artikel-IDAnzahl im Lager= LagerbestandRechtlicher Status= Produktkategorie (NEM, MP, KOS, etc.)Letzte Aktivität Datum= Zuletzt aktualisiertBestätigte Ware Menge= Erwartete LieferungETA neuer Wareneingang= Geschätztes Ankunftsdatum
Rechtliche Status-Codes
- NEM: Nahrungsergänzungsmittel
- MP: Medizinprodukt
- KOS: Kosmetika
- LBM: Lebensmittel
- AZM: Arzneimittel
Nächste Schritte
Bereit für komplexere Abfragen? Schauen Sie sich an:
- Erweiterte Query-Techniken
- Dashboard-Erstellung mit den verfügbaren Views
- Performance-Optimierung für große Datenmengen