Help me begrijpen en gebruiken van SQL functies voor datatransformatie
description
Met deze prompt kan de gebruiker leren hoe hij SQL functies kan inzetten om data binnen query's effectief te transformeren en manipuleren. Dit helpt bij het schrijven van complexere en efficiëntere SQL, en voorkomt handmatige data-aanpassingen buiten de database. De gebruiker ontvangt specifieke voorbeelden en uitleg aangepast aan zijn query of dataset, wat het leerproces versnelt en praktische toepassing vergroot.
prompt
Help me met het gebruik van SQL functies om data te transformeren binnen mijn query's. Beschrijf welke functies ik kan gebruiken voor gegevensman ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een overzicht van SQL-functies die je kunt gebruiken voor gegevensmanipulatie binnen je query's, afgestemd op je voorbeelddataset:
**1. Stringbewerking:**
- **CONCAT()**: Voegt meerdere tekstwaarden samen.
```sql
SELECT CONCAT(klant_id, '_', order_id) AS klant_order_code
FROM bestellingen;
```
- **UPPER() / LOWER()**: Zet tekst om in hoofd- of kleine letters.
```sql
SELECT UPPER(klant_id) AS klant_id_hoofdletters
FROM bestellingen;
```
- **SUBSTRING()**: Haalt een deel van een tekst op.
```sql
SELECT SUBSTRING(klant_id, 1, 3) AS klanten_code
FROM bestellingen;
```
**2. Datumformattering:**
- **DATE_FORMAT()** (MySQL) of **TO_CHAR()** (PostgreSQL): Formatteer datums naar een leesbaarder formaat.
```sql
-- Voor MySQL
SELECT DATE_FORMAT(order_datum, '%d-%m-%Y') AS order_datum_nieuw
FROM bestellingen;
-- Voor PostgreSQL
SELECT TO_CHAR(order_datum, 'DD-MM-YYYY') AS order_datum_nieuw
FROM bestellingen;
```
- **DATEDIFF()**: Berekent het aantal dagen tussen twee datums.
```sql
SELECT DATEDIFF(CURRENT_DATE, order_datum) AS dagen_geleden
FROM bestellingen;
```
**3. Numerieke berekeningen:**
- **Aritmetische operators (+, -, *, /)**: Voor basisberekeningen.
```sql
SELECT totaal_bedrag * 1.21 AS totaal_bedrag_incl_btw
FROM bestellingen;
```
- **ROUND()**: Rond getallen af.
```sql
SELECT ROUND(totaal_bedrag, 2) AS totaal_bedrag_afgerond
FROM bestellingen;
```
- **SUM()**, **AVG()**, **MIN()**, **MAX()**: Aggregatiefuncties voor samenvatting.
```sql
SELECT SUM(totaal_bedrag) AS totaal_omzet
FROM bestellingen;
```
**Voorbeeldquery met enkele functies:**
```sql
SELECT
order_id,
klant_id,
DATE_FORMAT(order_datum, '%d-%m-%Y') AS order_datum_nieuw,
ROUND(totaal_bedrag * 1.21, 2) AS bedrag_incl_btw,
CONCAT('Klant ', LOWER(klant_id)) AS klant_info
FROM bestellingen;
```
Deze functies helpen je om je gegevens te transformeren en inzichtelijker te maken binnen je SQL-query's.
provider: deepseek
model: deepseek-chat
Zeker! Hier zijn de belangrijkste SQL-functies voor gegevensmanipulatie, toegepast op jouw voorbeeldquery:
## Stringbewerking (STRING FUNCTIONS)
```sql
-- Hoofdletters en kleine letters
SELECT
order_id,
UPPER(klant_id) AS klant_id_upper,
LOWER(klant_id) AS klant_id_lower,
order_datum,
totaal_bedrag
FROM bestellingen;
-- String samenvoegen en lengte
SELECT
CONCAT('Bestelling ', order_id, ' - Klant ', klant_id) AS beschrijving,
LENGTH(klant_id) AS klant_id_lengte,
order_datum,
totaal_bedrag
FROM bestellingen;
-- Substrings en trimmen
SELECT
order_id,
SUBSTRING(klant_id, 1, 3) AS klant_prefix,
TRIM(klant_id) AS klant_id_trimmed,
order_datum,
totaal_bedrag
FROM bestellingen;
```
## Datumformattering (DATE FUNCTIONS)
```sql
-- Datumopmaak
SELECT
order_id,
klant_id,
DATE_FORMAT(order_datum, '%d-%m-%Y') AS datum_nl,
DATE_FORMAT(order_datum, '%Y/%m/%d') AS datum_iso,
order_datum,
totaal_bedrag
FROM bestellingen;
-- Datumberekeningen
SELECT
order_id,
klant_id,
order_datum,
DATE_ADD(order_datum, INTERVAL 30 DAY) AS leverdatum,
DATEDIFF(CURDATE(), order_datum) AS dagen_oud,
totaal_bedrag
FROM bestellingen;
-- Datumonderdelen
SELECT
order_id,
klant_id,
YEAR(order_datum) AS order_jaar,
MONTH(order_datum) AS order_maand,
DAY(order_datum) AS order_dag,
totaal_bedrag
FROM bestellingen;
```
## Numerieke berekeningen (NUMERIC FUNCTIONS)
```sql
-- Basisberekeningen
SELECT
order_id,
klant_id,
order_datum,
totaal_bedrag,
ROUND(totaal_bedrag, 2) AS afgerond_bedrag,
totaal_bedrag * 1.21 AS bedrag_met_btw,
FLOOR(totaal_bedrag) AS naar_beneden_afgerond
FROM bestellingen;
-- Statistieken en aggregatie
SELECT
order_id,
klant_id,
order_datum,
totaal_bedrag,
AVG(totaal_bedrag) OVER() AS gemiddelde_alle_orders,
SUM(totaal_bedrag) OVER(PARTITION BY klant_id) AS totaal_per_klant
FROM bestellingen;
```
## Gecombineerd voorbeeld
```sql
SELECT
order_id,
CONCAT('KL-', UPPER(klant_id)) AS klant_code,
DATE_FORMAT(order_datum, '%d %M %Y') AS besteldatum,
ROUND(totaal_bedrag * 1.21, 2) AS totaal_inclusief_btw,
CASE
WHEN totaal_bedrag > 1000 THEN 'Groot'
WHEN totaal_bedrag > 500 THEN 'Medium'
ELSE 'Klein'
END AS order_grootte
FROM bestellingen;
```
**Belangrijke opmerking**: De exacte functienamen kunnen per database (MySQL, PostgreSQL, SQL Server) iets verschillen. Controleer altijd de documentatie van jouw specifieke databasesysteem.