◯ Gratis: 5 utilizzi/giorno • Si azzera tra 16h 13m
Sviluppo e Tecnico

Generatore di Query SQL

Descrivi ciò di cui hai bisogno in inglese semplice e ottieni una query SQL corretta e leggibile per PostgreSQL, MySQL, SQLite, SQL Server, BigQuery o Snowflake — rispettando il tuo schema, con ogni clausola spiegata e note su indici e prestazioni.

Scopri di più

Il Generatore di Query SQL trasforma una domanda — 'ricavo mensile per paese nel 2025, solo clienti con più di tre ordini' — in una query scritta per il database che utilizzi: PostgreSQL, MySQL e MariaDB, SQLite, SQL Server, BigQuery o Snowflake. Incolla le tue tabelle e colonne e la query utilizza esattamente quei nomi; lascia lo schema vuoto e verranno indicate le ipotesi fatte. Scegli lo stile (CTE leggibili, compatto o analitico con funzioni finestra) e il livello di spiegazione desiderato, e ogni risposta termina con la forma del risultato e gli indici che lo renderebbero veloce. Non genera mai istruzioni distruttive a meno che non le richiedi.

0 / 4000
0 / 10000

✓ Gratuito — senza registrazione, senza carta di credito.

Tutti i pubblici

Ricavo mensile per paese, solo clienti attivi

Un report finanziario con filtro clienti in stile HAVING

Mostra anteprima di input e output

Input

Cosa dovrebbe restituire la query?
Monthly revenue per country for 2025, counting only customers who placed more than 3 orders in 2025. Sort by month, then revenue descending.
Tabelle e colonne (opzionale)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, country text, signup_at timestamp)
Dialetto SQL
PostgreSQL
Stile della query
Leggibile (CTE, una clausola per riga)
Spiegazione
Breve

Output (estratto)

```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 usato così com'è.**

Il CTE individua i clienti con più di tre ordini nel 2025; la query principale conserva solo i loro ordini, tronca ogni ordine al mese e somma il ricavo per mese e paese. L'intervallo di date è semi-aperto, quindi il 31 dicembre viene contato una sola volta…
Sviluppatori

Ultimo ordine per cliente

Una query con funzioni finestra che sostituisce una sottoquery correlata

Mostra anteprima di input e output

Input

Cosa dovrebbe restituire la query?
For every customer, their most recent order with its total and date.
Tabelle e colonne (opzionale)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, email text)
Dialetto SQL
MySQL / MariaDB
Stile della query
Analitico (funzioni finestra dove utili)
Spiegazione
Dettagliata (clausola per clausola)

Output (estratto)

```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 usato così com'è.**

| Clausola | Cosa fa |
|---|---|
| `ROW_NUMBER() OVER (PARTITION BY … ORDER BY created_at DESC, id DESC)` | numera gli ordini di ogni cliente dal più recente; il tie‑break sull'id rende il risultato deterministico |
| `JOIN ranked … AND r.rn = 1` | mantiene esattamente una riga per cliente |…

I risultati di Generatore di Query SQL appariranno qui

Aspettati blocchi di codice puliti con commenti, più una breve spiegazione delle modifiche.

Come usare Generatore di Query SQL

  1. Scrivi la domanda come la faresti a un collega: quali righe, quali filtri, quale raggruppamento, quale ordine.
  2. Incolla le tue tabelle e colonne se le hai — una tabella per riga con le sue colonne tra parentesi. La query utilizza quindi i tuoi nomi reali e non richiede modifiche.
  3. Scegli il dialetto che utilizzi; le funzioni data, LIMIT vs TOP e le virgolette differiscono tra PostgreSQL, MySQL, SQLite, SQL Server, BigQuery e Snowflake.
  4. Scegli la spiegazione 'Dettagliata' quando stai imparando o revisionando la richiesta di qualcun altro, 'Solo query' quando sai cosa hai chiesto.

Casi d'uso

1

Rispondi a una domanda di business di un analista senza attendere il team dati.

2

Trasforma una richiesta di report in una query che rispetti lo schema reale del data warehouse.

3

Riscrivi una query lenta in una versione CTE leggibile con gli indici necessari.

4

Traduci una query da MySQL a PostgreSQL o BigQuery durante la migrazione.

5

Stila il SELECT che mostra in anteprima cosa un UPDATE o DELETE modificherebbe prima di eseguirlo.

Consigli per i migliori risultati

  • Includi i tipi di colonna nello schema (created_at timestamp, total_cents integer) e la query gestisce correttamente date e denaro.
  • Esplicita 'solo' e 'almeno' — 'clienti con più di 3 ordini' diventa una clausola HAVING, non una WHERE.
  • Per una dashboard, richiedi lo stile analitico: le funzioni finestra evitano i self-join che rallentano i report.
  • Leggi la sezione sulle prestazioni; indica l'indice che trasforma una scansione completa della tabella in una ricerca.

Domande frequenti

Quali database sono supportati?

PostgreSQL, MySQL e MariaDB, SQLite, SQL Server (T-SQL), BigQuery e Snowflake. La query utilizza le funzioni e la sintassi proprie di quel dialetto — troncamento delle date, LIMIT o TOP, quoting e aggregazione di stringhe differiscono, e l'output è generato per quello selezionato.

Devo incollare il mio schema?

No, ma è utile. Con uno schema la query usa i nomi esatti di tabelle e colonne e non richiede modifiche. Senza schema, lo strumento assume uno schema minimo plausibile e elenca ogni supposizione sopra la spiegazione così puoi correggerla.

Genererà un DELETE o UPDATE?

Solo quando chiedi esplicitamente una modifica. Anche in tal caso avvolge l'istruzione in una transazione e inserisce prima il SELECT che mostra in anteprima le righe interessate, così puoi verificare prima di confermare.

Come gestisce date e denaro?

Le date usano le funzioni native di troncamento e confronto del dialetto, e gli intervalli sono scritti come semi-aperti così nessun giorno viene contato due volte. Il denaro memorizzato come centesimi interi rimane intero fino alla divisione finale, e la forma del risultato indica l'unità di ciascuna colonna.

La query è garantita veloce?

È scritta per essere prima corretta e poi leggibile, e ogni risposta termina con gli indici che la renderebbero veloce e con le strutture che impedirebbero l'uso degli indici. Eseguila su un volume di dati realistico prima di programmarla — solo il tuo database conosce le sue statistiche.

🔒
La tua privacy è protetta

Conserviamo il tuo input e il risultato per un massimo di 90 giorni per far funzionare il servizio, prevenire gli abusi e, se hai effettuato l'accesso, mostrarti la cronologia. Vengono elaborati dai fornitori di IA elencati nella nostra Informativa sulla privacy. Non li vendiamo.

Strumenti correlati

Prova questo agente

Ottimizzatore SEORicerca parole chiave, crea meta description, genera title tag e costruisci uno schema di contenuto —…Prova questo agente →

Workflow correlato

Pianifica il tuo romanzoDal concetto allo schema completoAvvia workflow →

Leggi di più