Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Elenco SELECT
L'elenco SELECT assegna un nome a colonne, funzioni ed espressioni che la query deve restituire. L'elenco rappresenta l'output della query.
Per ulteriori informazioni sulle funzioni SQL, consulta SQLriferimento alle funzioni. Per ulteriori informazioni sulle espressioni, consulta Espressioni condizionali.
Sintassi
SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
Parametri
- TOP number
-
TOP accetta come argomento un integer positivo che definisce il numero di righe che vengono restituite al client. Il comportamento con la clausola TOP è uguale al comportamento con la clausola LIMIT. A differenza del set di righe, il numero di righe restituito è fisso. Per restituire un set coerente di righe, utilizza TOP o LIMIT insieme a una clausola ORDER BY.
- ALL
-
Parola chiave ridondante che definisce il comportamento predefinito se non specifichi DISTINCT.
SELECT ALL *
è identico aSELECT *
(seleziona tutte le righe per tutte le colonne e conserva i duplicati). - DISTINCT
-
Opzione che elimina le righe duplicate dal set di risultati, in base ai valori corrispondenti in una o più colonne.
Nota
Se l'applicazione consente chiavi esterne o primarie non valide, le query possono restituire risultati errati. Ad esempio, una query SELECT DISTINCT potrebbe restituire righe duplicate se la colonna della chiave primaria non contiene tutti i valori univoci. Per ulteriori informazioni, consulta Definizione di limitazioni delle tabelle.
- * (asterisco)
-
Restituisce l'intero contenuto della tabella (tutte le colonne e tutte le righe).
- espressione
-
Espressione formata da una o più colonne presenti nelle tabelle a cui fa riferimento la query. Un'espressione può contenere funzioni SQL. Ad esempio:
avg(datediff(day, listtime, saletime))
- AS column_alias
-
Nome temporaneo per la colonna che viene utilizzata nel set di risultati finale. La parola chiave AS è facoltativa. Ad esempio:
avg(datediff(day, listtime, saletime)) as avgwait
Se non specifichi un alias per un'espressione che non è un semplice nome di colonna, il set di risultati applica un nome predefinito a quella colonna.
Nota
L'alias viene riconosciuto subito dopo essere stato definito nell'elenco di destinazione. Puoi utilizzare un alias in altre espressioni definite successivamente nello stesso elenco di destinazione. Nell'esempio seguente viene descritto quanto segue.
select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
Il vantaggio del riferimento alias laterale è che non devi ripetere l'espressione con alias quando crei espressioni più complesse nello stesso elenco di destinazione. Quando Amazon Redshift analizza questo tipo di riferimento, gli alias definiti precedentemente vengono posti in linea. Se esiste una colonna con lo stesso nome definita nella clausola
FROM
come espressione con alias precedente, la colonna nella clausolaFROM
ha la priorità. Ad esempio, nella query precedente se è presente una colonna denominata "probability" nella tabella raw_data, la "probability" nella seconda espressione nell'elenco di destinazione fa riferimento a tale colonna invece che al nome alias "probability".
Note per l'utilizzo
TOP è un'estensione SQL e costituisce un'alternativa al comportamento di LIMIT. Non puoi utilizzare TOP e LIMIT nella stessa query.
Esempi
L'esempio seguente restituisce 10 righe dalla tabella SALES. Sebbene la query utilizzi la clausola TOP, restituisce comunque un set di righe non prevedibile perché non è specificata alcuna clausola ORDER BY:
select top 10 * from sales;
La seguente query è funzionalmente equivalente, ma utilizza una clausola LIMIT invece di una clausola TOP:
select * from sales limit 10;
Il seguente esempio restituisce le prime 10 righe dalla tabella SALES mediante la clausola TOP, ordinate in base alla colonna QTYSOLD in ordine decrescente.
select top 10 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 8 | 574 8 | 718 8 | 868 8 | 2663 8 | 3396 8 | 3726 8 | 5250 8 | 6216 (10 rows)
Il seguente esempio restituisce i primi due valori QTYSOLD e SELLERID dalla tabella SALES, ordinati in base alla colonna QTYSOLD:
select top 2 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 (2 rows)
L'esempio seguente mostra l'elenco di gruppi di categorie distinti dalla tabella CATEGORY:
select distinct catgroup from category order by 1; catgroup ---------- Concerts Shows Sports (3 rows) --the same query, run without distinct select catgroup from category order by 1; catgroup ---------- Concerts Concerts Concerts Shows Shows Shows Sports Sports Sports Sports Sports (11 rows)
L'esempio seguente restituisce il set distinto di numeri delle settimane per dicembre 2008. Senza la clausola DISTINCT, l'istruzione restituirebbe 31 righe o una per ogni giorno del mese.
select distinct week, month, year from date where month='DEC' and year=2008 order by 1, 2, 3; week | month | year -----+-------+------ 49 | DEC | 2008 50 | DEC | 2008 51 | DEC | 2008 52 | DEC | 2008 53 | DEC | 2008 (5 rows)