Riferimento per il linguaggio delle query (versione 0.7)

Il linguaggio di query dell'API Google Previews ti consente di eseguire varie manipolazioni dei dati con la query all'origine dati.

Sommario

Introduzione

In genere le visualizzazioni prevedono i dati in una forma specifica. Ad esempio, un grafico a torta potrebbe mostrare dati suddivisi in due colonne: un'etichetta di testo e un valore numerico. I dati all'interno dell'origine dati potrebbero non corrispondere esattamente a questa struttura. Ad esempio, l'origine dati potrebbe avere più di due colonne oppure l'ordine delle colonne potrebbe non corrispondere all'ordine previsto dal grafico a torta.

Il linguaggio di query offre la possibilità di inviare richieste di manipolazione e formattazione dei dati all'origine dati e di assicurarsi che i contenuti e la struttura dei dati restituiti corrispondano alla struttura prevista.

La sintassi del linguaggio della query è simile a quella di SQL. Gli sviluppatori che hanno familiarità con SQL dovrebbero essere in grado di imparare e utilizzare rapidamente questo linguaggio di query. Sono disponibili molti tutorial SQL sul Web. Esistono alcune differenze tra questo linguaggio di query e SQL, descritte nella sezione Sintassi.

Tieni presente che le origini dati non sono necessarie per implementare il linguaggio di query o, se sì, per implementare tutte le funzionalità del linguaggio. A meno che tu non abbia motivo di credere altrimenti, non dovresti dipendere da un'origine dati per implementare tutte le funzionalità di questo linguaggio.

Utilizzo del linguaggio di query

Puoi collegare una stringa di query a una richiesta di origine dati in due modi: impostando la stringa di query all'interno del codice JavaScript o impostandola come parametro nell'URL dell'origine dati. Se la richiesta non include una stringa di query, il comportamento predefinito di un'origine dati prevede la restituzione di tutte le righe e le colonne utilizzando l'ordine e la formattazione predefiniti di riga/colonna. Puoi modificare l'impostazione includendo una stringa di query nella richiesta a un'origine dati.

Impostazione della query da JavaScript

Per impostare la stringa di query dal codice JavaScript, chiama il metodo setQuery della classe google.visualization.Query.

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

Impostare la query nell'URL dell'origine dati

La stringa di query può essere aggiunta all'URL dell'origine dati utilizzando il parametro tq. L'impostazione della query nel parametro URL anziché in JavaScript ti consente di utilizzare facilmente le visualizzazioni scritte da altri sviluppatori e di personalizzare la query.

La stringa di query deve essere codificata correttamente come parametro URL. Puoi codificare un URL utilizzando la funzione JavaScript encodeURIComponent oppure manualmente, utilizzando lo strumento di codifica alla fine di questa sezione.

Esempio:

Prendi in considerazione la seguente stringa di query per un foglio di lavoro Google. Tieni presente che gli ID colonna nei fogli di lavoro sono sempre lettere; il testo dell'intestazione di colonna mostrato nel foglio di lavoro pubblicato è costituito da etichette, non da ID. Devi utilizzare l'ID, non l'etichetta, nella stringa di query.

select A, sum(B) group by A

Quando viene codificata, questa query diventa:

select%20A%2C%20sum(B)%20group%20by%20A

Supponiamo che questo sia l'URL del foglio di lavoro:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

Aggiungi /gviz/tq?tq=YOUR_QUERY_STRING all'URL del foglio di lavoro per ottenere la stringa di query finale:

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

Utilizza il seguente strumento per codificare o decodificare una stringa di query:

Nota: per accedere ai dati privati dei fogli di lavoro, è necessario trasmettere le credenziali di autorizzazione esplicite utilizzando OAuth. Per ulteriori dettagli, consulta la sezione dedicata a Fogli di lavoro Google: autorizzazione.

Sintassi della lingua

Panoramica

La sintassi del linguaggio di query dell'API Google Preview è progettata in modo simile alla sintassi SQL. Tuttavia, è un sottoinsieme di SQL, con alcune funzionalità che dovrai imparare. Se conosci SQL, non dovrebbe essere troppo difficile imparare.

Tabelle di dati

Questo documento utilizza il termine tabella di dati per fare riferimento al set di risultati di una query. Una tabella di dati è composta da righe e colonne. Ogni colonna in una tabella di dati ha le seguenti proprietà:

  • Identificatore (o ID colonna). Utilizzato per fare riferimento alle colonne all'interno della query. Tieni presente che non dovresti mai cercare di fare riferimento a una colonna per etichetta in una query, ma solo per identificatore. Suggerimento: prova a non utilizzare ID che includono spazi: questi sono difficili da gestire e possono commettere errori, ma difficili da trovare nella programmazione. Inoltre, un ID che include spazi deve essere racchiuso tra virgolette.
  • Etichetta. string che viene generalmente mostrata agli utenti finali. ad esempio come una legenda in un grafico a torta o un'intestazione di colonna in una tabella.
  • Tipo di dati. I tipi di dati supportati sono string, number, boolean, date, datetime e timeofday. Tutti i valori di una colonna avranno un tipo di dati corrispondente al tipo di colonna o un valore null. Questi tipi sono simili, ma non identici, ai tipi JavaScript. Sono descritti nella sezione Litrial di questa pagina.
  • Pattern di formattazione. L'origine dati può definire pattern di formattazione per alcune o tutte le colonne. Puoi sostituire questo pattern includendo una clausola di formato.

Tabella utilizzata in tutti gli esempi:

In questa sezione, tutti gli esempi di query si riferiscono alla seguente tabella. Le intestazioni di colonna sono identificatori di colonna.

nome
string
diretto
string
pranzo
timeofday
stipendio
number
Dataassunzione
date
età
number
isSenior
boolean
anzianitàOra di inizio
datetime
MarioNasale velare12:00:00
1000
2005-03-1935true2007-12-02 15:56:00
DavideNasale velare12:00:00
500
2006-04-1927falsenull
SilviaNasale velare13:00:00
600
2005-10-1030falsenull
BenVendite12:00:00
400
2002-10-1032true09-03-2005 12:30:00
DanaVendite12:00:00
350
2004-09-0825falsenull
MicheleMarketing13:00:00
800
2005-01-1024true30-12-2007 14:40:00

Clausole della lingua

La sintassi del linguaggio di query è composta dalle seguenti clausole. Ogni clausola inizia con una o due parole chiave. Tutte le clausole sono facoltative. Le clausole sono separate da spazi. L'ordine delle clausole deve essere il seguente:

Clausola Utilizzo
select Consente di selezionare le colonne da restituire e in quale ordine. Se omesse, tutte le colonne della tabella vengono restituite nell'ordine predefinito.
where Restituisce solo le righe che corrispondono a una condizione. Se omesse, vengono restituite tutte le righe.
group by Aggrega i valori tra le righe.
pivot Trasforma valori distinti nelle colonne in nuove colonne.
order by Ordina le righe in base ai valori nelle colonne.
limit Limita il numero di righe restituite.
offset Salta un determinato numero di prime righe.
label Imposta le etichette delle colonne.
format I valori in determinate colonne vengono formattati utilizzando determinati modelli di formattazione.
options Imposta opzioni aggiuntive.
from La clausola from è stata eliminata dal linguaggio.

 

Seleziona

La clausola select viene utilizzata per specificare le colonne da restituire e il relativo ordine. Se questa clausola non è specificata o se viene utilizzato select *, tutte le colonne della tabella dell'origine dati vengono restituite nell'ordine originale. Le colonne fanno riferimento agli identificatori (non alle etichette). Ad esempio, in un foglio di lavoro Google, gli identificatori di colonna sono una o due lettere della colonna (A, B, C, ...).

Gli elementi in una clausola select possono essere identificatori di colonna o l'output di funzioni di aggregazione, funzioni di scalabilità o operatori.

Esempi:

select *
select dept, salary
select max(salary)

Nel seguente esempio, le virgolette iniziali vengono utilizzate per fare riferimento agli ID di colonna che contengono spazi (indirizzo email) o che sono parole riservate (data):

select `email address`, name, `date`

Esecuzione della query seguente nella tabella di esempio:

select lunchTime, name

Restituisce la seguente risposta:

pranzo name
12:00:00Mario
12:00:00Davide
13:00:00Silvia
12:00:00Ben
12:00:00Dana
13:00:00Michele

Dove

La clausola where viene utilizzata per restituire solo le righe che corrispondono a una condizione specificata.

I semplici operatori di confronto sono <=, <, >, >=, =, !=, <>. Entrambi gli operatori di confronto != <> significano diverso. Le stringhe vengono confrontate in base al valorelessicografico. Tieni presente che l'uguaglianza è indicata da =, non da == come nella maggior parte dei linguaggi informatici. Il confronto con null viene eseguito utilizzando is null o is not null.

Puoi unire più condizioni utilizzando gli operatori logici and, or e not. Le parentesi possono essere utilizzate per definire la precedenza esplicita.

La clausola Dove supporta anche alcuni operatori di confronto delle stringhe più complessi. Questi operatori prendono due stringhe come argomenti; qualsiasi argomento non stringa (ad esempio, date o numeri) verrà convertito in stringhe prima del confronto. La corrispondenza delle stringhe è sensibile alle maiuscole (per risolvere il problema, puoi utilizzare le funzioni di scalabilità upper() o lower()).

  • contains: una corrispondenza per sottostringa. intero contains parte è vero se parte è ovunque all'interno di intero. Esempio: where name contains 'John' corrisponde a "John", "John Adams", "long John Silver" ma non "john adams".
  • starts with: una corrispondenza di prefisso. value starts with prefix è true se prefix si trova all'inizio di value. Esempi: where dept starts with 'engineering' corrisponde a "ingegnere" e "responsabili di ingegneria". where dept starts with 'e' corrisponde a "ingegneria", "eng" ed "e".
  • ends with: una corrispondenza del suffisso. value ends with suffix è true se suffix si trova alla fine di value. Esempio: where role ends with 'y' corrisponde a "cowboy", "boy" e "y".
  • matches: una corrispondenza di espressione regolare (preg). haystack matches needle è true se l'espressione regolare in needle corrisponde a haystack. Esempi: where country matches '.*ia' corrisponde a India e Nigeria, ma non a Indiana. Poiché questa non è una ricerca globale, where country matches 'an' non corrisponderà a "Canada".
  • like: una ricerca di testo che supporta due caratteri jolly: %, che corrisponde a zero o più caratteri di qualsiasi tipo e _ (trattino basso) che corrisponde a qualsiasi carattere. È simile all'operatore SQL like. Esempio: where name like fre% corrisponde a "fre", "fred" e "freddy".

Esempi:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

Esecuzione della query seguente nella tabella di esempio:

select name where salary > 700

Restituisce la seguente risposta:

name
Mario
Michele

Raggruppa per

La clausola group by viene utilizzata per aggregare i valori nelle righe. Viene creata una singola riga per ogni combinazione di valori distinta nella clausola group-by. I dati vengono ordinati automaticamente in base alle colonne di raggruppamento, se non diversamente specificato da una clausola order by.

Nota: se utilizzi una clausola group by, tutte le colonne elencate nella clausola select devono essere indicate nella clausola group by o essere aggregate da una funzione di aggregazione.

Esempi:

select dept, max(salary) group by dept

Esecuzione della query seguente nella tabella di esempio:

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

Restituisce la seguente risposta:

pranzo stipendio medio conteggio-età
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

Pivot

La clausola pivot viene utilizzata per trasformare valori distinti nelle colonne in nuove colonne. Ad esempio, un pivot di una colonna "anno" genera una tabella con una colonna per ogni anno distinto riportato nella tabella originale. Ciò può essere utile se, ad esempio, una visualizzazione con i grafici a linee disegna ogni colonna come una linea separata. Se vuoi disegnare una riga separata per ogni anno e "anno" è una delle colonne della tabella originale, una buona opzione è usare un'operazione pivot per eseguire la necessaria trasformazione dei dati.

Nota: se utilizzi una clausola pivot, tutte le colonne elencate nella clausola select devono essere indicate nella clausola group by o essere aggregate da una funzione di aggregazione.

Poiché più righe possono contenere gli stessi valori per le colonne pivot, pivot implica l'aggregazione. Tieni presente che se utilizzi pivot senza group by, la tabella dei risultati conterrà esattamente una riga. Ad esempio, eseguendo la seguente query sulla tabella di esempio:

select sum(salary) pivot dept

Restituisce la seguente risposta:

Retribuzione somma tecnica Retribuzione somma di marketing Retribuzione somma delle vendite
2100 800 750

Questo perché, 2100 è la somma degli stipendi per il reparto Ing, 800 per il reparto Marketing e così via.

L'utilizzo di pivot insieme a group by può essere ancora più utile, poiché crea una tabella in cui ogni cella contiene il risultato dell'aggregazione per la riga e la colonna pertinenti. Ad esempio, eseguendo la seguente query nella tabella di esempio:

select dept, sum(salary)
  group by dept
  pivot lunchTime

Restituisce la seguente risposta:

Rep 12:00:00 somma salariale 13:00:00 somma salariale
Nasale velare 1500 600
Marketing null 800
Vendite 750 null

Puoi anche "invertire" questa tabella, passando da colonne a righe e viceversa passando dalle colonne pivot a group by. Esegui la seguente query nella tabella di esempio:

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

Restituisce la seguente risposta:

pranzo Retribuzione somma tecnica Retribuzione somma di marketing Retribuzione somma delle vendite
12:00:00 1500 null 750
13:00:00 600 800 null

Nella clausola pivot puoi anche utilizzare più di una colonna. In tal caso, le colonne della tabella di risposta sono composte da tutte le combinazioni uniche di valori presenti nelle colonne presenti nella tabella originale. Ad esempio, eseguendo la seguente query sulla tabella di esempio:

select sum(salary)
  pivot dept, lunchTime

Restituisce la seguente risposta:

Ing. 12:00:00 somma salariale Ing. 13:00:00 somma salariale Marketing,13:00:00 somma salariale Vendite,12:00:00 somma salariale
1500 600 800 750

Tieni presente che solo le combinazioni che vengono visualizzate nella tabella originale hanno colonne corrispondenti nella tabella di risposta. Ecco perché non esiste una colonna per il marketing,12:00:00 o per le vendite,13:00:00.

È anche possibile utilizzare più di un'aggregazione. Ad esempio, eseguendo la seguente query nella tabella di esempio:

select sum(salary), max(lunchTime)
  pivot dept

Restituisce la seguente risposta:

Retribuzione somma tecnica Retribuzione somma di marketing Retribuzione somma delle vendite Ing. max-lunchTime Marketing max-lunchTime Vendite max-lunchTime
2100 800 750 13:00:00 13:00:00 12:00:00

Puoi combinare più aggregazioni nella clausola select, più colonne nella clausola group by e più colonne nella clausola pivot. Internamente, l'aggregazione viene eseguita dalla concatenazione delle colonne del gruppo tramite clausole pivot e pivot.

Le colonne specificate nella clausola pivot non possono essere visualizzate nelle clausole select, group by o order by. Quando si utilizza pivot, la clausola order by non può contenere colonne di aggregazione. Il motivo è che per ogni aggregazione specificata nella clausola select vengono generate molte colonne nella tabella dei risultati. Tuttavia, puoi formattare le colonne di aggregazione quando viene utilizzato pivot. Il risultato di questo formato è che tutte le nuove colonne pertinenti per l'aggregazione specifica generate dall'operazione pivot sono formattate in base al pattern specificato. Nell'esempio precedente, l'aggiunta di format sum(salary) "some_format_string" influirà sulle seguenti colonne: stipendio Eng, stipendio per il marketing e stipendio per le vendite.

Puoi etichettare le colonne di aggregazione. Se nella clausola label non è specificata alcuna etichetta, l'etichetta di una colonna prodotta a seguito di pivot è composta dall'elenco dei valori nelle colonne pivot, dal tipo di aggregazione (min, max, somma, ...) e dall'etichetta della colonna aggregata. Ad esempio "Salario, Eng,12:00:00". Se è stata specificata una sola aggregazione nella clausola select, la parte di aggregazione viene rimossa dall'etichetta e viene conservato solo l'elenco di valori nelle colonne pivot. Ad esempio, "Eng,12:00:00". Quando una clausola label specifica un'etichetta per una colonna di aggregazione, l'etichetta richiesta viene aggiunta all'elenco di valori, sia quando è presente una sola aggregazione nella clausola select, sia quando ce n'è più di una. Ad esempio, label sum(salary) "sumsal" restituirà le etichette di colonna "Eng,12:00:00 sommas", "Eng,13:00:00 sumsal" ecc.

Ordina per

La clausola order by viene utilizzata per ordinare le righe in base ai valori nelle colonne specificate.

Gli elementi in una clausola order by possono essere identificatori di colonna o l'output di funzioni di aggregazione, funzioni di scalabilità o operatori.

Esempi:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

Limite

La clausola limit viene utilizzata per limitare il numero di righe restituite.

Esempio:

limit 100

Offset

La clausola offset viene usata per saltare un determinato numero di prime righe. Se viene utilizzata una clausola limit, offset viene applicato per primo: ad esempio, limit 15 offset 30 restituisce le righe da 31 a 45.

Esempi:

offset 10
limit 30 offset 210

Etichetta

La clausola label viene utilizzata per impostare l'etichetta per una o più colonne. Non è possibile utilizzare un valore etichetta al posto di un ID in una query.

Gli elementi in una clausola label possono essere identificatori di colonna o l'output di funzioni di aggregazione, funzioni di scalabilità o operatori.

Sintassi:

label column_id label_string [,column_id label_string]
column_id
L'identificatore della colonna a cui viene assegnata l'etichetta.
label_string
L'etichetta da assegnare alla colonna. Molte visualizzazioni utilizzano l'etichetta della colonna come testo da mostrare all'utente finale, ad esempio l'etichetta di una legenda in un grafico a torta. Le etichette sono valori letterali di stringa e seguono queste regole di sintassi.

Esempio:

L'esempio seguente imposta l'etichetta per la colonna dept su "Reparto", l'etichetta per la colonna del nome su "Nome dipendente" e l'etichetta per la colonna del luogo su "Sede del dipendente":

label dept 'Department', name "Employee Name", location 'Employee Location'

Formato

La clausola format viene utilizzata per specificare un valore formattato per le celle in una o più colonne. I dati restituiti dovrebbero includere sia un valore effettivo sia un valore formattato per ogni cella di una colonna formattata. Molte visualizzazioni utilizzano il valore non formattato per i calcoli, ma il valore formattato per la visualizzazione. I pattern specificati in questa clausola vengono generalmente restituiti nella proprietà pattern delle colonne corrispondenti.

Sintassi del pattern:

number, date, timeofday e datetime
I pattern date e number definiti dalla ICU.
boolean
Il pattern è un string nel formato "value-if-true:value-if-false".

Esempio:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

Opzioni

La clausola options viene utilizzata per controllare le opzioni aggiuntive per l'esecuzione delle query. Le parole chiave che possono seguire la clausola options sono:

  • no_format rimuove i valori formattati dal risultato e lascia solo i valori sottostanti. Può essere utilizzato quando la visualizzazione specifica non utilizza i valori formattati per ridurre le dimensioni della risposta.
  • no_values rimuove i valori sottostanti dal risultato e lascia solo i valori formattati. Può essere utilizzato quando la visualizzazione specifica utilizza solo i valori formattati per ridurre le dimensioni della risposta.

Funzioni di manipolazione dei dati

Esistono diversi tipi di operatori e funzioni che consentono di manipolare o aggregare i dati in una singola colonna o di confrontare o combinare i dati tra le colonne. Alcuni esempi sono sum() (per aggiungere tutti i valori in una colonna), max (per trovare il valore più alto in una colonna) e + (per aggiungere i valori di due colonne nella stessa riga).

Alcune funzioni possono essere visualizzate in qualsiasi clausola, mentre altre possono essere visualizzate in un sottoinsieme di clausole. Questo è documentato di seguito.

Esempio:

Data la tabella... Se applichiamo questa query... Otteniamo questo risultato.
Nome Salary Imposta Data di inizio
Qual è il colmo per un politico? 1000 100 1/1/2009
Avital 2000 200 21/1/2008
Moran 3000 300 12/02/2008
select upper(name), year(startDate)
Nome anno(Data di inizio)
AVITALE 2008
MORAN 2008
SHARON 2009

 

Le seguenti funzioni di manipolazione dei dati sono definite dal linguaggio di query dell'API Visualizzazione Google:

 

Funzioni di aggregazione

Le funzioni di aggregazione vengono trasmesse a una singola identificatore di colonna ed eseguono un'azione su tutti i valori di ogni gruppo (i gruppi vengono specificati dalle clausole group by o pivot) o da tutte le righe se non vengono utilizzate).

Esempi:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

Le funzioni di aggregazione possono essere utilizzate nelle clausole select, order by, label e format. Non possono essere visualizzate nelle clausole where, group by, pivot, limit, offset o options.

Di seguito sono riportate le funzioni di aggregazione supportate:

Nome Descrizione Tipi di colonne supportati Tipo restituito
avg() Restituisce il valore medio di tutti i valori nella colonna per un gruppo. number number
count() Restituisce il conteggio degli elementi nella colonna specificata per un gruppo. Le celle nulle non vengono conteggiate. Qualsiasi tipo number
max() Restituisce il valore massimo nella colonna per un gruppo. Le date vengono confrontate con quelle precedenti, che sono più piccole, in questo caso i string vengono messi a confronto in ordine alfabetico, con sensibilità alle maiuscole. Qualsiasi tipo Stesso tipo della colonna
min() Restituisce il valore minimo nella colonna per un gruppo. Le date vengono confrontate con quelle precedenti, in questo caso le dimensioni string sono in ordine alfabetico, con sensibilità alle maiuscole Qualsiasi tipo Stesso tipo della colonna
sum() Restituisce la somma di tutti i valori della colonna per un gruppo. number number

Nota: le funzioni di aggregazione possono utilizzare solo un identificatore di colonna come argomento:

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

Funzioni scalari

Le funzioni scalate operano su zero o più parametri per produrre un altro valore. Le funzioni scalari possono essere trasmesse a qualsiasi espressione che restituisca il parametro del tipo appropriato. Tieni presente che questi tipi sono i tipi definiti nella sezione Litrial di questo documento, che potrebbe essere leggermente diverso dagli oggetti JavaScript con nome simile.

Tieni presente che il nome della colonna verrà modificato includendo una funzione scalare.

Le funzioni scalari possono prendere come parametro tutto ciò che valuta un singolo valore:

year(max(startDate))
datediff(now(), todate(1234567890000))

Le funzioni scalari possono essere utilizzate in una qualsiasi delle seguenti clausole: select, where, group by, pivot, order by, label, e format.

Nome
year()

Restituisce il valore dell'anno da una data o un valore timestamp. Ad esempio: year(date "2009-02-05") restituisce 2009.

Parametri: un parametro di tipo date o datetime.
Tipo di reso: number
month()

Restituisce il valore del mese in base zero da una data o un valore timestamp. Ad esempio: month(date "2009-02-05") restituisce 1. Nota: i mesi sono basati su 0, quindi la funzione restituisce 0 per gennaio, 1 per febbraio e così via.

Parametri: un parametro di tipo date o datetime.
Tipo di reso: number
day()

Restituisce il giorno del mese da un valore di date o TIMEZONE. Ad esempio: day(date "2009-02-05") restituisce 5.

Parametri: un parametro di tipo date o datetime.
Tipo di reso: number
hour()

Restituisce il valore orario da un valore timestamp o timeofday. Ad esempio: hour(timeofday "12:03:17") restituisce 12.

Parametri: un parametro di tipo datetime o timeofday.
Tipo di reso: number
minute()

Restituisce il valore al minuto da un valore datetime o timeofday. Ad esempio: minute(timeofday "12:03:17") restituisce 3.

Parametri: un parametro di tipo datetime o timeofday.
Tipo di reso: number
second()

Restituisce il secondo valore da un valore datetime o timeofday. Ad esempio: second(timeofday "12:03:17") restituisce 17.

Parametri: un parametro di tipo datetime o timeofday.
Tipo di reso: number
millisecond()

Restituisce la parte in millisecondi di un valore datetime o timeofday. Ad esempio: millisecond(timeofday "12:03:17.123") restituisce 123.

Parametri: un parametro di tipo datetime o timeofday.
Tipo di reso: number
quarter()

Restituisce il trimestre da un valore di date o datetime. Ad esempio: quarter(date "2009-02-05") restituisce 1. Tieni presente che i trimestri si basano su 1, quindi la funzione restituisce 1 per il primo trimestre, 2 per il secondo e così via.

Parametri: un parametro di tipo date o datetime.
Tipo di reso: number
dayOfWeek()

Restituisce il giorno della settimana da un valore date o datetime. Ad esempio: dayOfWeek(date "2009-02-26") restituisce 5. Tieni presente che i giorni sono basati sull'1, quindi la funzione restituisce 1 per la domenica, 2 per il lunedì e così via.

Parametri: un parametro di tipo date o datetime.
Tipo di reso: number
now()

Restituisce un valore data/ora che rappresenta l'attuale datetime nel fuso orario GMT.

Parametri: nessuno
Tipo di reso: datetime
dateDiff()

Restituisce la differenza di giorni tra due valori date o datetime. Nota: nel calcolo vengono utilizzate solo le parti date dei valori, quindi la funzione restituisce sempre un valore intero. Ad esempio: dateDiff(date "2008-03-13", date "2008-02-12") restituisce 29; dateDiff(date "2009-02-13", date "2009-03-13") restituisce -29. I valori temporali vengono troncati prima del confronto.

Parametri: due parametri di tipo date o datetime (uno dei due)
Tipo di reso: number
toDate()

Trasforma il valore specificato in un valore date.

  • Data un valore date, restituisce lo stesso valore.
  • Data un valore datetime, restituisce la parte date. Ad esempio: toDate(dateTime "2009-01-01 12:00:00") restituisce "2009-01-01".
  • Dato un valore number N, viene restituito un valore date N millisecondi dopo il periodo. L'epoca è definita come 1° gennaio 1970, 00:00:00 GMT. Ad esempio: toDate(1234567890000) restituisce "2009-02-13".
Parametri: un parametro di tipo date, datetime o number.
Tipo di reso: date
upper()

Restituisce string specificato in lettere maiuscole. Ad esempio: upper("foo") restituisce "FOO".

Parametri:un parametro di tipo string.
Tipo di reso: string
lower()

Restituisce string specificato in lettere minuscole. Ad esempio: lower("Bar") restituisce "bar".

Parametri:un parametro di tipo string.
Tipo di reso: string

Operatori aritmetici

Puoi utilizzare gli operatori aritmetici per eseguire operazioni matematiche su qualsiasi elemento che restituisca un numero singolo (ovvero l'output di funzioni, operatori o costanti aggregate appropriate).

Esempi:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

Sono definiti i seguenti operatori:

Nome Descrizione Parametri Tipo restituito
+ Restituisce la somma di due valori number. Due number number
- Restituisce la differenza tra due valori number. Due number number
* Restituisce il prodotto di due number. Due number number
/ Restituisce il quoziente di due number. La divisione per zero restituisce null. Due number number

Elementi della lingua

Letterali

I valori letterali sono valori utilizzati per confronti o compiti. I valori letterali possono essere string, numeri, valori booleani o vari tipi di data e ora. Ecco alcuni esempi di valori letterali utilizzati nella sintassi delle query:

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

Ecco i formati per ogni tipo di valore letterale:

string
Un valore letterale string deve essere racchiuso tra virgolette singole o doppie. Esempi: "fourteen" 'hello world' "It's raining".
number
I valori letterali numerici sono specificati con notazione decimale. Esempi: 3  3.0  3.14  -71  -7.2  .6
boolean
I valori letterali booleani sono true o false.
date
Utilizza la parola chiave date seguita da un valore letterale string nel formato yyyy-MM-dd. Esempio:date "2008-03-18".
timeofday
Utilizza la parola chiave timeofday seguita da un valore letterale string nel formato HH:mm:ss[.SSS] Esempio: timeofday "12:30:45".
datetime
Una data e un'ora, utilizzando la parola chiave datetime o la parola chiave timestamp seguita da un valore letterale string nel formato yyyy-MM-dd HH:mm:ss[.sss]. Esempio: datetime '2008-03-18 12:30:34.123'

Identificatori

Gli identificatori (o ID) sono testi string che identificano le colonne.

Importante: se il tuo identificatore

  • Ha spazi,
  • Si tratta di un termine prenotato,
  • Contiene qualsiasi elemento tranne caratteri alfanumerici o trattini bassi ([a-zA-Z0-9_]), oppure
  • Inizia con una cifra

deve essere racchiuso tra virgolette (non virgolette singole).

In caso contrario, non è necessario citare il tuo identificatore. Tieni presente che non tutte le parole chiave definite dalla sintassi sono parole riservate; pertanto, ad esempio, puoi utilizzare "max" come identificatore, senza citazione preventiva.

Esempi: col1   employee_table   `start date`   `7 days traffic`   `select`

Sconsigliamo di scegliere un identificatore che richiede le virgolette iniziali, perché può essere facile dimenticarsi di queste ultime o usare accidentalmente le virgolette singole anziché le virgolette. Si tratta di errori comuni e spesso difficili da debug.

Sensibilità alle richieste

Gli identificatori e i valori letterali delle stringhe sono sensibili alle maiuscole. Tutti gli altri elementi linguistici non fanno distinzione tra maiuscole e minuscole.

Parole riservate

Le seguenti parole riservate devono essere racchiuse tra virgolette se utilizzate come identificatore:

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where