Lista SELECT - Amazon Redshift

Lista SELECT

A lista SELECT nomeia as colunas, funções e expressões que você deseja que a consulta retorne. A lista representa o resultado da consulta.

Para obter mais informações sobre funções SQL, consulte Referência de funções SQL. Para obter mais informações sobre expressões, consulte Expressões condicionais.

Sintaxe

SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]

Parâmetros

TOP número

TOP pega um inteiro positivo como argumento, que define o número de linhas retornadas para o cliente. O comportamento da cláusula TOP é o mesmo da cláusula LIMIT. O número de linhas retornado é fixo, mas o conjunto de linhas não. Para retornar um conjunto consistente de linhas, use TOP ou LIMIT em conjunto com uma cláusula ORDER BY.

ALL

Palavra-chave redundante que define o comportamento padrão se você não especificar DISTINCT. SELECT ALL * é o mesmo que SELECT * (seleciona todas as linhas para todas as colunas e retém duplicações).

DISTINCT

Opção que elimina linhas duplicadas do conjunto de resultados, com base em valores correspondentes em uma ou mais colunas.

nota

Se sua aplicação permitir chaves primárias ou chaves estrangeiras inválidas, isso pode fazer com que algumas consultas retornem resultados incorretos. Por exemplo, uma consulta SELECT DISTINCT pode retornar linhas duplicadas se a coluna chave primária não contiver todos os valores exclusivos. Para obter mais informações, consulte Definir restrições de tabela.

* (asterisco)

Retorna o conteúdo total da tabela (todas as colunas e todas as linhas).

expressão

Expressão formada por uma ou mais colunas que existem em tabelas referidas pela consulta. Uma expressão pode conter funções SQL. Por exemplo:

avg(datediff(day, listtime, saletime))
AS alias_coluna

Nome temporário da coluna que é usada no conjunto de resultados finais. A palavra-chave AS é opcional. Por exemplo:

avg(datediff(day, listtime, saletime)) as avgwait

Se você não especificar um alias para uma expressão que não for um nome de coluna simples, o resultado definido aplicará um nome padrão à coluna.

nota

O alias é reconhecido logo após ser definido na lista de destino. É possível usar um alias em outras expressões definidas depois dele na mesma lista de destino. Isso é ilustrado no exemplo a seguir.

select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;

O benefício da referência do alias lateral é que você não precisa repetir a expressão usada como alias ao criar expressões mais complexas na mesma lista de destino. Quando o Amazon Redshift analisa esse tipo de referência, ele apenas alinha os aliases definidos anteriormente. Se houver uma coluna com o mesmo nome definido na cláusula FROM como a expressão usada como alias anteriormente, a coluna na cláusula FROM terá prioridade. Por exemplo, se na consulta acima houver uma coluna chamada “probabilidade” na tabela raw_data, a “probabilidade” na segunda expressão da lista de destino faz referência àquela coluna, em vez do nome do alias “probabilidade”.

Observações de uso

TOP é uma extensão SQL que fornece uma alternativa ao comportamento de LIMIT. Você não pode usar TOP e LIMIT na mesma consulta.

Exemplos

O exemplo a seguir retorna dez linhas da tabela SALES. Embora a consulta use a cláusula TOP, ela ainda retorna um conjunto imprevisível de linhas porque nenhuma cláusula ORDER BY foi especificada,

select top 10 * from sales;

A consulta a seguir é funcionalmente equivalente, mas usa uma cláusula LIMIT em vez de uma cláusula TOP:

select * from sales limit 10;

O exemplo a seguir retorna as dez primeiras linhas da tabela SALES usando a cláusula TOP, classificadas pela coluna QTYSOLD em ordem 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)

O exemplo a seguir retorna os dois primeiros valores de QTYSOLD e SELLERID da tabela SALES, classificados pela coluna QTYSOLD:

select top 2 qtysold, sellerid from sales order by qtysold desc, sellerid; qtysold | sellerid --------+---------- 8 | 518 8 | 520 (2 rows)

O exemplo a seguir mostra a lista de grupos de categorias distintos da tabela 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)

O exemplo a seguir retorna o conjunto distinto de números da semana de dezembro de 2008. Sem a cláusula DISTINCT, a declaração retornaria 31 linhas, ou uma para cada dia do mês.

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)