◯ Gratis: 5 keer/dag • Reset over 17h 9m
Ontwikkeling & Technisch

SQL‑querygenerator

Beschrijf wat je nodig hebt in duidelijk Engels en krijg een correcte, leesbare SQL‑query voor PostgreSQL, MySQL, SQLite, SQL Server, BigQuery of Snowflake — met respect voor je schema, waarbij elke clausule wordt uitgelegd en notities over indexen en prestaties worden gegeven.

Meer leren

De SQL‑querygenerator zet een vraag — 'maandelijkse omzet per land voor 2025, alleen klanten met meer dan drie bestellingen' — om in een query geschreven voor de database die je gebruikt: PostgreSQL, MySQL en MariaDB, SQLite, SQL Server, BigQuery of Snowflake. Plak je tabellen en kolommen en de query gebruikt precies die namen; laat het schema leeg en hij geeft de aannames die hij heeft gemaakt weer. Je kiest de stijl (leesbare CTE's, compact, of analytisch met window‑functies) en hoeveel uitleg je wilt, en elk antwoord eindigt met de vorm van het resultaat en de indexen die het snel zouden maken. Hij schrijft nooit destructieve statements tenzij je erom vraagt.

0 / 4000
0 / 10000

✓ Gratis te gebruiken — geen registratie, geen creditcard.

Alle doelgroepen

Maandelijkse omzet per land, alleen actieve klanten

Een financieel rapport met een HAVING‑achtige klantfilter

Voorbeeld van invoer en uitvoer bekijken

Invoer

Wat moet de query retourneren?
Monthly revenue per country for 2025, counting only customers who placed more than 3 orders in 2025. Sort by month, then revenue descending.
Tabellen en kolommen (optioneel)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, country text, signup_at timestamp)
SQL‑dialect
PostgreSQL
Query‑stijl
Leesbaar (CTE's, één clausule per regel)
Uitleg
Kort

Uitvoer (fragment)

```sql
WITH active_customers AS (
  SELECT o.customer_id
  FROM orders AS o
  WHERE o.created_at >= DATE '2025-01-01'
    AND o.created_at <  DATE '2026-01-01'
  GROUP BY o.customer_id
  HAVING COUNT(*) > 3
)
SELECT
  DATE_TRUNC('month', o.created_at)::date AS month,
  c.country,
  SUM(o.total_cents) / 100.0            AS revenue
FROM orders AS o
JOIN active_customers AS a ON a.customer_id = o.customer_id
JOIN customers        AS c ON c.id = o.customer_id
WHERE o.created_at >= DATE '2025-01-01'
  AND o.created_at <  DATE '2026-01-01'
GROUP BY 1, 2
ORDER BY month, revenue DESC;
```

**Schema gebruikt zoals gegeven.**

De CTE vindt klanten met meer dan drie bestellingen in 2025; de hoofdquery houdt alleen hun bestellingen, truncates elke bestelling naar de maand en somt de omzet per maand en land. Het datumbereik is half‑open zodat 31 december één keer wordt geteld…
Ontwikkelaars

Laatste bestelling per klant

Een window‑functie query die een gecorreleerde subquery vervangt

Voorbeeld van invoer en uitvoer bekijken

Invoer

Wat moet de query retourneren?
For every customer, their most recent order with its total and date.
Tabellen en kolommen (optioneel)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, email text)
SQL‑dialect
MySQL / MariaDB
Query‑stijl
Analytisch (window‑functies waar nuttig)
Uitleg
Gedetailleerd (clausule voor clausule)

Uitvoer (fragment)

```sql
WITH ranked AS (
  SELECT
    o.customer_id,
    o.id          AS order_id,
    o.total_cents,
    o.created_at,
    ROW_NUMBER() OVER (PARTITION BY o.customer_id ORDER BY o.created_at DESC, o.id DESC) AS rn
  FROM orders AS o
)
SELECT c.id AS customer_id, c.email, r.order_id, r.total_cents / 100.0 AS total, r.created_at
FROM customers AS c
JOIN ranked AS r ON r.customer_id = c.id AND r.rn = 1
ORDER BY r.created_at DESC;
```

**Schema gebruikt zoals gegeven.**

| Clause | Wat het doet |
|---|---|
| `ROW_NUMBER() OVER (PARTITION BY … ORDER BY created_at DESC, id DESC)` | nummert elke bestelling van een klant, nieuwste eerst; de id‑tiebreak maakt het resultaat deterministisch |
| `JOIN ranked … AND r.rn = 1` | houdt precies één rij per klant |…

Je SQL‑querygenerator-resultaten verschijnen hier

Verwacht schone codeblokken met commentaar, plus een korte uitleg van wat er is veranderd.

Hoe te gebruiken SQL‑querygenerator

  1. Formuleer de vraag zoals je die aan een collega zou stellen: welke rijen, welke filters, welke groepering, welke volgorde.
  2. Plak je tabellen en kolommen als je die hebt — één tabel per regel met de kolommen tussen haakjes. De query gebruikt vervolgens je echte namen en hoeft niet bewerkt te worden.
  3. Kies het dialect dat je gebruikt; datumfuncties, LIMIT versus TOP en aanhalingstekens verschillen allemaal tussen PostgreSQL, MySQL, SQLite, SQL Server, BigQuery en Snowflake.
  4. Kies 'Gedetailleerd' uitleg wanneer je iets leert of een verzoek van een ander beoordeelt, 'Alleen query' wanneer je weet wat je hebt gevraagd.

Gebruikscases

1

Beantwoord een zakelijke vraag van een analist zonder te wachten op het datateam.

2

Zet een rapportageverzoek om in een query die het echte schema van het datawarehouse respecteert.

3

Herschrijf een trage query naar een leesbare CTE‑versie met de benodigde indexen.

4

Vertaal een query van MySQL naar PostgreSQL of BigQuery bij een migratie.

5

Stel de SELECT op die een preview geeft van wat een UPDATE of DELETE zou raken voordat je deze uitvoert.

Tips voor de beste resultaten

  • Neem de kolomtypes op in het schema (created_at timestamp, total_cents integer) en de query verwerkt datums en geld correct.
  • Zeg 'alleen' en 'ten minste' expliciet — 'klanten met meer dan 3 bestellingen' wordt een HAVING‑clausule, niet een WHERE.
  • Vraag voor een dashboard om de analytische stijl: window‑functies vermijden de self‑joins die rapporten traag maken.
  • Lees de prestatie‑sectie; deze noemt de index die een volledige tabelscan omzet in een lookup.

Veelgestelde vragen

Welke databases worden ondersteund?

PostgreSQL, MySQL en MariaDB, SQLite, SQL Server (T‑SQL), BigQuery en Snowflake. De query gebruikt de eigen functies en syntaxis van dat dialect — datum‑truncatie, LIMIT of TOP, aanhalingstekens en string‑aggregatie verschillen allemaal, en de output wordt geschreven voor het door jou gekozen dialect.

Moet ik mijn schema plakken?

Nee, maar het helpt. Met een schema gebruikt de query je exacte tabel‑ en kolomnamen en hoeft niet bewerkt te worden. Zonder schema gaat het hulpmiddel uit van een minimaal plausibel schema en geeft het elke aanname boven de uitleg weer zodat je deze kunt corrigeren.

Schrijft het een DELETE of UPDATE?

Alleen wanneer je expliciet om een wijziging vraagt. Zelfs dan wordt de statement in een transactie gewikkeld en wordt de SELECT die een preview geeft van de getroffen rijen eerst geplaatst, zodat je kunt controleren voordat je commit.

Hoe gaat het om met datums en geld?

Datums gebruiken de native truncatie‑ en vergelijkingsfuncties van het dialect, en bereiken worden geschreven als half‑open intervallen zodat geen dag dubbel wordt geteld. Geld dat als gehele centen wordt opgeslagen blijft integer tot de uiteindelijke deling, en de vorm van het resultaat geeft aan in welke eenheid elke kolom staat.

Is de query gegarandeerd snel?

Hij is geschreven om eerst correct en daarna leesbaar te zijn, en elk antwoord eindigt met de indexen die het snel zouden maken en de constructies die indexgebruik zouden verhinderen. Voer hem uit tegen een realistisch datavolume voordat je hem plant — alleen jouw database kent haar statistieken.

🔒
Je privacy is beschermd

We bewaren je invoer en het resultaat maximaal 90 dagen om de dienst te laten werken, misbruik te voorkomen en, als je bent ingelogd, je geschiedenis te tonen. Ze worden verwerkt door de AI-aanbieders die in ons privacybeleid staan. We verkopen ze niet.

Gerelateerde tools

Deze agent proberen

Blog Sprint AgentGenereer een compleet, SEO-geoptimaliseerd blogartikel van 3000+ woorden in 5 stappen: idee → titel → schema…Deze agent proberen →

Gerelateerde workflow

Cursuslancering in 7 dagenSchema → 5 lessen → quizzen → verkooppagina → e-mailreeks — de volledige stack in één…Workflow uitvoeren →

Lees meer