Como faço para obter o MIN () dos dois campos no Postgres?

votos
95

Digamos que eu tenho uma tabela como esta:

name | score_a | score_b
-----+---------+--------
 Joe |   100   |   24
 Sam |    96   |  438
 Bob |    76   |  101
 ... |   ...   |  ...

Eu gostaria de selecionar o mínimo de score_a e score_b. Em outras palavras, algo como:

SELECT name, MIN(score_a, score_b)
FROM table

Os resultados, é claro, seria:

name | min
-----+-----
 Joe |  24
 Sam |  96
 Bob |  76
 ... | ...

No entanto, quando eu tento isso no Postgres, eu fico, sem função corresponde ao nome e argumento dado tipos. Você pode precisar adicionar conversões de tipo explícitas. MAX () e MIN () aparecem para trabalhar em linhas em vez de colunas.

É possível fazer o que eu estou tentando?

Publicado 25/11/2008 em 22:44
fonte usuário
Em outras línguas...                            


3 respostas

votos
152

MENOS (a, b):

O GREATESTe LEASTfunções selecionar o valor maior ou menor de uma lista de qualquer número de expressões. As expressões devem todos ser conversível para um tipo de dados comum, que será o tipo do resultado (ver Seção 10.5 para mais detalhes). Valores NULL na lista são ignorados. O resultado será NULL apenas se todas as expressões são avaliadas como NULL.

Note-se que GREATESTe LEASTnão são no padrão SQL, mas são uma extensão comum. Alguns outros bancos de dados fazê-los retornar NULL se qualquer argumento é NULL, em vez de somente quando todos são NULL ...

Respondeu 25/11/2008 em 22:46
fonte usuário

votos
23

Aqui está o link para documentação para a LEAST()função no PostgreSQL:

http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582

Respondeu 25/11/2008 em 23:17
fonte usuário

votos
-5

Você pode obter a resposta, colocando os dados em uma coluna como esta:

SELECT name, MIN(score_a, score_b) as minimum_score
FROM table

Aqui, estamos colocando o valor mínimo entre score_ae score_be imprimir o mesmo armazenando esse valor em uma coluna chamada minimum_score.

Respondeu 23/04/2017 em 05:03
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more