Skip to main content

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-ID
  • Anzahl im Lager = Lagerbestand
  • Rechtlicher Status = Produktkategorie (NEM, MP, KOS, etc.)
  • Letzte Aktivität Datum = Zuletzt aktualisiert
  • Bestätigte Ware Menge = Erwartete Lieferung
  • ETA 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: