Elenco SELECT - Amazon Redshift

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 a SELECT * (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 clausola FROM 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)