Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Função de janela FIRST_VALUE

Modo de foco
Função de janela FIRST_VALUE - Amazon Redshift

Considerando um conjunto de linhas ordenado, FIRST_VALUE retorna o valor da expressão especificada em relação à primeira linha no quadro de janela.

Para obter informações sobre como selecionar a última linha no quadro, consulte Função de janela LAST_VALUE.

Sintaxe

FIRST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

Argumentos

expressão

A coluna ou expressão de destino na qual a função opera.

IGNORE NULLS

Quando essa opção é usada com FIRST_VALUE, a função retorna o primeiro valor no quadro que não seja NULL (ou NULL se todos os valores forem NULL).

RESPECT NULLS

Indica que o Amazon Redshift deve incluir valores nulos na determinação de qual linha usar. RESPECT NULLS é compatível por padrão se você não especificar IGNORE NULLS.

OVER

Introduz as cláusulas de janela para a função.

PARTITION BY expr_list

Define a janela para a função em termos de uma ou mais expressões.

ORDER BY order_list

Classifica as linhas dentro de cada partição. Se nenhuma cláusula PARTITION BY for especificada, ORDER BY classifica a tabela inteira. Se você especificar uma cláusula ORDER BY, você também deve especificar uma frame_clause.

Os resultados da função FIRST_VALUE dependem da ordem dos dados. Os resultados são não determinísticos nos seguintes casos:

  • Quando uma cláusula ORDER BY é especificada e uma partição contém dois valores diferentes para uma expressão

  • Quando uma expressão avalia para valores diferentes que correspondem ao mesmo valor na lista ORDER BY.

frame_clause

Se uma cláusula ORDER BY é usada para uma função agregada, uma cláusula de quadro explícita é necessária. A cláusula de quadro refina o conjunto de linhas na janela de uma função, incluindo ou excluindo conjuntos de linhas no resultado ordenado. A cláusula de quadro consiste na palavra-chave ROWS e nos especificadores associados. Consulte Resumo da sintaxe de funções da janela.

Tipo de retorno

Essas funções são compatíveis com expressões que usam tipos de dados primitivos do Amazon Redshift. O tipo de retorno é igual ao tipo de dados da expressão.

Exemplos

Os exemplos a seguir usam a tabela VENUE dos dados de amostra TICKIT. Para obter mais informações, consulte Banco de dados de exemplo.

O seguinte exemplo retorna a capacidade de acomodação para cada local de evento da tabela VENUE com os resultados ordenados por capacidade (alta a baixa). A função FIRST_VALUE é usada para selecionar o local de evento que corresponde à primeira linha no quadro: nesse caso, a linha com o mais alto número de assentos. Os resultados são particionados por estado, portanto quando o valor VENUESTATE muda, um novo primeiro valor é selecionado. O quadro da janela não é vinculado, portanto o mesmo primeiro valor é selecionado para cada linha em cada partição.

Para a Califórnia, Qualcomm Stadium tem mais alto número de assentos (70561), portanto esse nome é o primeiro valor para todas as linhas da partição CA.

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+--------------------------------+------------------------------ CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium CA | 63026 | McAfee Coliseum | Qualcomm Stadium CA | 56000 | Dodger Stadium | Qualcomm Stadium CA | 45050 | Angel Stadium of Anaheim | Qualcomm Stadium CA | 42445 | PETCO Park | Qualcomm Stadium CA | 41503 | AT&T Park | Qualcomm Stadium CA | 22000 | Shoreline Amphitheatre | Qualcomm Stadium CO | 76125 | INVESCO Field | INVESCO Field CO | 50445 | Coors Field | INVESCO Field DC | 41888 | Nationals Park | Nationals Park FL | 74916 | Dolphin Stadium | Dolphin Stadium FL | 73800 | Jacksonville Municipal Stadium | Dolphin Stadium FL | 65647 | Raymond James Stadium | Dolphin Stadium FL | 36048 | Tropicana Field | Dolphin Stadium ...

O seguinte exemplo mostra o uso da opção IGNORE NULLS e depende da inclusão de uma nova linha na tabela VENUE:

insert into venue values(2000,null,'Stanford','CA',90000);

Essa nova linha contém um valor NULL para a coluna VENUENAME. Agora, repita a consulta para FIRST_VALUE que foi mostrada anteriormente nesta seção:

select venuestate, venueseats, venuename, first_value(venuename) over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venueseats >0) order by venuestate; venuestate | venueseats | venuename | first_value -----------+------------+----------------------------+------------- CA | 90000 | NULL | NULL CA | 70561 | Qualcomm Stadium | NULL CA | 69843 | Monster Park | NULL ...

Como a nova linha contém o valor mais alto de VENUESEATS (90000) e o VENUENAME é NULL, a função FIRST_VALUE retorna o NULL para a partição CA. Para ignorar linhas como essa na avaliação da função, adicione a opção IGNORE NULLS ao argumento da função:

select venuestate, venueseats, venuename, first_value(venuename) ignore nulls over(partition by venuestate order by venueseats desc rows between unbounded preceding and unbounded following) from (select * from venue where venuestate='CA') order by venuestate; venuestate | venueseats | venuename | first_value ------------+------------+----------------------------+------------------ CA | 90000 | NULL | Qualcomm Stadium CA | 70561 | Qualcomm Stadium | Qualcomm Stadium CA | 69843 | Monster Park | Qualcomm Stadium ...

Nesta página

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.