Gewinnermittlung mit Group By und Quartil

Ich habe folgende Tabelle:


  • OrderID
  • ProduktID
  • RegionsID
  • Restmenge
  • Preis
  • Tagesverkauf

Was ich gerne hätte wäre:
Eine Tabelle gruppiert nach ProduktID und RegionsID mit dem jeweiligen (zu erwartenden) Gewinn für dieses Produkt und diese Region. Dabei soll folgendes zugrunde gelegt werden:

Der Preis ist der Minimalpreis für das Produkt in dieser Region, wobei nur Orders mit einer Restmenge > 5 gezählt werden sollen

[highlight=sql]select
ProduktID,
RegionsID
min(Preis) as MINP
from Verkaufsdatenbank
where Restmenge>5
group by ProduktID, RegionsID
order by min(Preis) desc[/highlight]

Die Verkaufsmenge soll dem unteren Quartil entsprechen, also praktisch der Wert TOP 25% der Tagesverkäufe sein:

[highlight=sql]set @b=1;
select @b:=ceil(count(orderID)/4)
from Verkaufsdatenbank
where ProduktID = 1236 and RegionsID=30000142;
PREPARE STMT FROM ‘select Tagesverkaufas erwarteter_Tagesverkauf
from Verkaufsdatenbank where ProduktID = 1236
and RegionsID=30000142
order by Tagesverkauf desc
LIMIT ?,1’;
EXECUTE STMT USING @b;
[/highlight]

Wie man sieht, muss ich allerdings bei meiner Lösung noch per Hand die ProduktID und RegionsID eintragen :frowning:

Wie mache ich es, dass er mir jetzt eine Tabelle zusammenbaut, die dann so aussieht:


  • ProduktID
  • RegionsID
  • erwarteter_Tagesverkauf
  • Gewinn

Gruppiert nach ProduktID und RegionsID sortiert nach Gewinn desc

Ich verzweifele schon - sitze jetzt gut 2 Tage daran.

Das ist kein PostgreSQL, oder?
Nur darum geht es hier in diesem Forum.

Sorry, habe nicht auf das “Postgre” im Logo geachtet :frowning:
Aber falls trotzdem jemand eine Lösung wüsste wäre ich sehr dankbar - die Stuktur ist doch ähnlich nehme ich an? (kenne Postgre leider garnicht)

Hmm, nicht wirklich. Du verwendest da viel Dialekt deiner Datenbank. Sieht wie SQL-Server aus, oder?

In das mehr (oder weniger) passende Forum für “Andere Datenbanken” verschoben.