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, lorsque j'essaye ceci dans Postgres, j'obtiens: "Aucune fonction ne correspond au nom et aux types d'arguments donnés. Vous devrez peut-être ajouter des transtypages de types explicites." MAX () et MIN () semblent fonctionner sur lignes plutôt que colonnes.
Est-il possible de faire ce que j'essaie?
MOINS (a, b):
Les fonctions
GREATEST
etLEAST
sélectionnent la valeur la plus grande ou la plus petite dans une liste d'un certain nombre d'expressions. Les expressions doivent toutes être convertibles en un type de données commun, qui sera le type du résultat (voir Section 10.5 pour plus de détails). Les valeurs NULL de la liste sont ignorées. Le résultat sera NULL uniquement si toutes les expressions sont évaluées à NULL.Notez que
GREATEST
etLEAST
ne sont pas dans la norme SQL, mais sont une extension courante. Certaines autres bases de données leur font retourner NULL si un argument est NULL, plutôt que seulement quand tous sont NULL ...
Voici le lien vers les documents pour la fonction LEAST()
dans PostgreSQL:
http://www.postgresql.org/docs/current/static/functions-conditional.html#AEN15582