Disons que j'ai une table comme celle-ci:
name | score_a | score_b
-----+---------+--------
Joe | 100 | 24
Sam | 96 | 438
Bob | 76 | 101
... | ... | ...
Je souhaite sélectionner le minimum de score_a et score_b. En d'autres termes, quelque chose comme:
SELECT name, MIN(score_a, score_b)
FROM table
Les résultats, bien sûr, seraient:
name | min
-----+-----
Joe | 24
Sam | 96
Bob | 76
... | ...
Cependant, quand j'essaye ceci dans Postgres, j'obtiens, "Aucune fonction ne correspond au nom et aux types d'argument donnés. Vous devrez peut-être ajouter des transtypages de types explicites." MAX () et MIN () semblent fonctionner sur les lignes plutôt que sur les colonnes.
Est-il possible de faire ce que j'essaye?
la source
MAX()
de deux valeurs, c'estGREATEST(a, b)
:)Voici le lien vers la documentation de la
LEAST()
fonction dans PostgreSQL:http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582
la source
Vous pouvez obtenir la réponse en mettant ces données dans une colonne comme celle-ci:
Ici, nous mettons la valeur minimale entre
score_a
etscore_b
et l'imprimons en stockant cette valeur dans une colonne nomméeminimum_score
.la source
min(expression)
existe. Définition tirée de la documentation: la valeur minimale de l'expression sur toutes les valeurs d'entrée avec «expression» est tout type numérique, chaîne, date / heure, réseau ou énumération, ou tableaux de ces types