"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como selecionar a primeira linha de cada grupo em um grupo PostgreSQL por consulta?

Como selecionar a primeira linha de cada grupo em um grupo PostgreSQL por consulta?

Postado em 2025-02-10
Navegar:218

How to Select the First Row of Each Group in a PostgreSQL GROUP BY Query?

Selecione a primeira linha do grupo pelo grupo de postgreSql

No PostGresql, selecionar a primeira linha de cada grupo do grupo por operação é um requisito comum. Para fazer isso, podemos usar a poderosa distinta na cláusula .

SELECT DISTINCT ON (customer) id, customer, total
FROM purchases
ORDER BY customer, total DESC
A cláusula

distinto na cláusula nos permite definir quais expressões são consideradas duplicatas. Nesse caso, especificamos a coluna cliente , o que significa que apenas linhas com o mesmo valor cliente será considerado duplicado.

A cláusula

da cláusula de define a ordem em que as linhas são processadas. A primeira linha em cada grupo cliente será a linha com o maior valor total. Se várias linhas tiverem o mesmo valor total máximo, o fator decisivo será a ordem em que as colunas id serão definidas.

Pontos de chave

  • distinto em é uma extensão do postgreSQL que nos permite especificar quais expressões determinam duplicatas.
  • A expressão
  • distinta na expressão deve corresponder à expressão líder na ordem por cláusula.
  • A cláusula
  • por pode ser usada para determinar a prioridade de cada grupo em linha.
  • você pode incluir expressões que não estão no distinto em ordenar por cláusula na selecionar list.
  • O índice usado pela consulta afetará significativamente o desempenho. Um índice de várias colunas abrangendo as colunas
  • customer , total e id na mesma ordem que a consulta fornecerá o melhor desempenho.

instruções adicionais

O método

distinto no é muito eficiente para dados com uma cardinalidade de alta coluna (um pequeno número de linhas por cliente). No entanto, para dados com uma menor cardinalidade das colunas do cliente (grande número de linhas por cliente), outras técnicas de consulta podem ser mais eficientes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3