Help mij met het schrijven van SQL queries voor data-analyse
description
Met deze prompt kan ik efficiënt SQL queries schrijven die mij helpen waardevolle inzichten uit mijn data te halen. Het verbetert mijn analysecapaciteiten zonder dat ik diepgaande kennis van SQL nodig heb. Het biedt concrete voorbeelden en uitleg, waardoor ik sneller leer en complexere analyses kan uitvoeren dan met alleen basis-SQL-docs.
prompt
Help mij SQL queries te schrijven om data-analyse uit te voeren op mijn dataset. Mijn datasetbeschrijving: <beschrijf je dataset of onderwerp v ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn enkele voorbeeld-SQL queries die je kunnen helpen bij het analyseren van de bestedingspatronen in je dataset 'bestellingen'. Ik geef ook uitleg over de gebruikte functies.
1. Totale omzet per klant
```sql
SELECT
klant_id,
SUM(bedrag) AS totale_besteding
FROM
bestellingen
GROUP BY
klant_id
ORDER BY
totale_besteding DESC;
```
*Uitleg:*
- `SUM(bedrag)` berekent de totale uitgaven per klant.
- `GROUP BY klant_id` groepeert de data per klant.
- `ORDER BY totale_besteding DESC` toont de klanten met de hoogste uitgaven eerst.
2. Gemiddelde besteding per bestelling
```sql
SELECT
AVG(bedrag) AS gemiddelde_besteding_per_bestelling
FROM
bestellingen;
```
*Uitleg:*
- `AVG(bedrag)` geeft het gemiddelde bedrag per bestelling weer.
3. Aantal bestellingen per maand (trendanalyse)
```sql
SELECT
DATE_FORMAT(datum, '%Y-%m') AS maand,
COUNT(bestelling_id) AS aantal_bestellingen
FROM
bestellingen
GROUP BY
maand
ORDER BY
maand;
```
*Uitleg:*
- `DATE_FORMAT(datum, '%Y-%m')` haalt jaar en maand uit de datum voor maandelijkse groepering.
- `COUNT(bestelling_id)` telt het aantal bestellingen per maand.
4. Gemiddelde besteding per klant per maand
```sql
SELECT
klant_id,
DATE_FORMAT(datum, '%Y-%m') AS maand,
SUM(bedrag) AS maandelijkse_besteding
FROM
bestellingen
GROUP BY
klant_id, maand
ORDER BY
klant_id, maand;
```
*Uitleg:*
- Groepeert op klant en maand om het patroon per klant per maand te analyseren.
5. Top 10 klanten op basis van totale uitgaven
```sql
SELECT
klant_id,
SUM(bedrag) AS totale_besteding
FROM
bestellingen
GROUP BY
klant_id
ORDER BY
totale_besteding DESC
LIMIT 10;
```
*Uitleg:*
- Beperkt de resultaten tot de top 10 klanten met de hoogste uitgaven.
Wil je nog meer specifieke analyses of visualisaties?
provider: deepseek
model: deepseek-chat
Absoluut! Hier is een uitgebreide uitleg met SQL queries voor het analyseren van bestedingspatronen in je dataset.
### 1. Basis Samenvatting Statistieken
```sql
SELECT
COUNT(*) AS totaal_aantal_bestellingen,
COUNT(DISTINCT klant_id) AS unieke_klanten,
MIN(datum) AS eerste_besteldatum,
MAX(datum) AS laatste_besteldatum,
SUM(bedrag) AS totaal_omzet,
AVG(bedrag) AS gemiddeld_bestelbedrag,
MIN(bedrag) AS laagste_bestelling,
MAX(bedrag) AS hoogste_bestelling
FROM bestellingen;
```
**Functies uitgelegd:**
- `COUNT()`: Telt aantal rijen
- `COUNT(DISTINCT)`: Telt unieke waarden
- `MIN()`/`MAX()`: Vindt minimum/maximum waarden
- `SUM()`: Bereken totaalbedrag
- `AVG()`: Bereken gemiddelde waarde
### 2. Maandelijkse Omzet Trendanalyse
```sql
SELECT
YEAR(datum) AS jaar,
MONTH(datum) AS maand,
COUNT(*) AS aantal_bestellingen,
SUM(bedrag) AS maandelijkse_omzet,
AVG(bedrag) AS gemiddelde_bestelling
FROM bestellingen
GROUP BY YEAR(datum), MONTH(datum)
ORDER BY jaar, maand;
```
**Functies uitgelegd:**
- `YEAR()`: Extraheert jaar uit datum
- `MONTH()`: Extraheert maand uit datum
- `GROUP BY`: Groepeert resultaten per opgegeven kolommen
### 3. Klantsegmentatie op Bestedingsniveau
```sql
SELECT
klant_id,
COUNT(*) AS aantal_bestellingen,
SUM(bedrag) AS totale_besteding,
AVG(bedrag) AS gemiddelde_besteding,
MAX(bedrag) AS hoogste_bestelling
FROM bestellingen
GROUP BY klant_id
ORDER BY totale_besteding DESC;
```
### 4. Top 10 Meest Waardevolle Klanten
```sql
SELECT
klant_id,
SUM(bedrag) AS totale_waarde,
COUNT(*) AS aantal_transacties,
AVG(bedrag) AS gemiddelde_transactie
FROM bestellingen
GROUP BY klant_id
ORDER BY totale_waarde DESC
LIMIT 10;
```
### 5. Dagelijkse Bestelpatronen
```sql
SELECT
DAYNAME(datum) AS dag_van_week,
COUNT(*) AS aantal_bestellingen,
SUM(bedrag) AS totale_omzet,
AVG(bedrag) AS gemiddelde_omzet
FROM bestellingen
GROUP BY DAYNAME(datum), DAYOFWEEK(datum)
ORDER BY DAYOFWEEK(datum);
```
**Nieuwe functies:**
- `DAYNAME()`: Geeft naam van de weekdag
- `DAYOFWEEK()`: Geeft numerieke dag van week (1=zondag)
### 6. Groeipercentage Maand tot Maand
```sql
WITH maandelijkse_omzet AS (
SELECT
YEAR(datum) AS jaar,
MONTH(datum) AS maand,
SUM(bedrag) AS omzet
FROM bestellingen
GROUP BY YEAR(datum), MONTH(datum)
)
SELECT
jaar,
maand,
omzet,
LAG(omzet) OVER (ORDER BY jaar, maand) AS vorige_maand,
ROUND(((omzet - LAG(omzet) OVER (ORDER BY jaar, maand)) / LAG(omzet) OVER (ORDER BY jaar, maand)) * 100, 2) AS groei_percentage
FROM maandelijkse_omzet
ORDER BY jaar, maand;
```
**Geavanceerde functies:**
- `WITH`: Creëert een Common Table Expression (CTE)
- `LAG()`: Toegang tot vorige rij in result set
- `OVER()`: Definieert window voor window functions
- `ROUND()`: Afronden van decimalen
### 7. Klant Loyaliteit Analyse (Aankoopfrequentie)
```sql
SELECT
klant_id,
COUNT(*) AS aantal_bestellingen,
DATEDIFF(MAX(datum), MIN(datum)) AS klantperiode_dagen,
CASE
WHEN COUNT(*) > 1 THEN DATEDIFF(MAX(datum), MIN(datum)) / (COUNT(*) - 1)
ELSE NULL
END AS gemiddelde_dagen_tussen_bestellingen
FROM bestellingen
GROUP BY klant_id
HAVING COUNT(*) > 1;
```
**Nieuwe functies:**
- `DATEDIFF()`: Verschil tussen twee datums in dagen
- `CASE`: Conditionele logica in SQL
- `HAVING`: Filteren op gegroepeerde resultaten
### 8. Bestedingscategorieën Maken
```sql
SELECT
CASE
WHEN bedrag < 50 THEN 'Klein (< €50)'
WHEN bedrag BETWEEN 50 AND 100 THEN 'Medium (€50-€100)'
WHEN bedrag BETWEEN 100 AND 200 THEN 'Groot (€100-€200)'
ELSE 'Zeer groot (> €200)'
END AS bestedings_categorie,
COUNT(*) AS aantal_bestellingen,
SUM(bedrag) AS totale_waarde
FROM bestellingen
GROUP BY bestedings_categorie
ORDER BY totale_waarde DESC;
```
### Tips voor verdere analyse:
1. **Voeg WHERE clauses toe** om specifieke periodes te filteren
2. **Gebek JOINs** als je klantinformatie in andere tabellen staat
3. **Experimenteer met verschillende groeperingen** om nieuwe inzichten te vinden
4. **Sla queries op** als views voor regelmatige rapportage
Deze queries geven je een solide basis om bestedingspatronen, klantgedrag en trends in je data te analyseren!