Heim > Fragen und Antworten > Hauptteil
Ich habe einen Tisch wie diesen:
Abfrage zum Kopieren von Daten:
DROP TABLE IF EXISTS units_table; CREATE TEMP TABLE units_table ( Brand varchar(100), units numeric(38,12) ); INSERT INTO units_table (Brand, units) VALUES ('A',200),('B',0),('C',300),('D',400),('E',1500),('F',700),('G',800),('H',450);
Insbesondere wenn ich Fensterfunktionen verwende, möchte ich den höchsten Wert in der Tabelle erhalten. Wie unten gezeigt:
Aber wenn ich verwende:
select brand, units, FIRST_VALUE(units) OVER () as Highest from units_table
Der erste Wert, den es gibt, ist 0. Wenn ich das mache,
select brand, units, FIRST_VALUE(units) OVER (ORDER BY UNITS) as Highest from units_table
Fehler auslösen. Wie konkret sollte die Fensterfunktion verwendet werden, um dieses Problem zu lösen? Vielen Dank im Voraus!
P粉6163836252024-04-05 11:32:53
select brand,units, FIRST_VALUE(units) OVER (ORDER BY UNITS DESC) as Highest from units_table
对我有用
P粉9596764102024-04-05 09:38:42
您需要MAX()
窗口函数:
SELECT brand, units, MAX(units) OVER () AS Highest FROM units_table;
请参阅演示。