Frage

Lassen Sie uns sagen, ich habe eine Tabelle wie folgt aus:

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

Ich möchte das Minimum von score_a und score_b auszuwählen. Mit anderen Worten, so etwas wie:

SELECT name, MIN(score_a, score_b)
FROM table

Die Ergebnisse, natürlich wäre:

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

Allerdings, wenn ich dies in Postgres versuchen, ich werde, „keine Funktion entspricht den angegebenen Namen und Argumenttypen. Unter Umständen müssen Sie explizite Typ wirft hinzuzufügen.“ MAX () und MIN () erscheinen über die Arbeit Zeilen statt Spalten.

Ist es möglich, zu tun, was ich bin versucht?

War es hilfreich?

Lösung

MINDESTENS (a, b):

  

Die GREATEST und LEAST Funktionen wählen Sie den größten oder kleinsten Wert aus einer Liste von einer beliebigen Anzahl von Ausdrücken. Die Ausdrücke müssen alle auf einen gemeinsamen Datentyp konvertierbar sein, die die Art des Ergebnisses sein werden (siehe Abschnitt 10.5 für Details). NULL-Werte in der Liste werden ignoriert. Das Ergebnis wird NULL nur dann, wenn alle Ausdrücke auf NULL zu bewerten.

     

Beachten Sie, dass GREATEST und LEAST ist nicht in dem SQL-Standard, ist aber eine gemeinsame Erweiterung. Einige andere Datenbanken machen sie NULL zurück, wenn ein Argument NULL ist, und nicht nur dann, wenn alle sind NULL ...

Andere Tipps

Hier ist der Link zu docs für die LEAST() Funktion in PostgreSQL:

http://www.postgresql.org/docs/ Strom / static / Funktionen-conditional.html # AEN15582

Sie können die Antwort erhalten, indem diese Daten in eine Spalte wie folgt setzen:

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

Hier haben wir setzen den Minimalwert unter score_a und score_b und Drucken dieselbe durch diesen Wert in einer Spalte mit dem Namen minimum_score zu speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top