Ich habe eine Tabelle, die x, y
Punkte und müssen Punkte finden, wo es weniger als drei andere Zeilen in der Tabelle entweder mit einem höheren x
Wert oder höher y
Wert.Wählen Sie Zeilen basierend auf einen Vergleich mit anderen Zeilen in derselben Ansicht
x | y
-----+-----
85 | 996
109 | 989
116 | 987
164 | 983
create or replace function sk(tableName text)
returns integer
as $$
declare
count integer;
r record;
begin
count :=3;
for r in execute 'select * from TABLE'
if
loop
count := count - 1;
end loop;
return count;
end
$$ language plpgsql;
Das erwartete Ergebnis ist eine neue Ansicht, die nur die Punkte hat, die weniger als 3 mit größeren x
oder y
.
Bearbeiten Sie Ihre Frage und zeigen die Ergebnisse, die Sie wollen. –
"psql" ist kein gültiger Name für Postgres, das ist der Name der Standard-Befehlszeilenschnittstelle. Und Sie müssen nicht "Schleife", müssen Sie ein Problem lösen. Schleifen ist eine mögliche Technik und selten ein effizienter Ansatz in jedem RDBMS. Ich habe mir die Freiheit genommen, etwas zu verdeutlichen. –