SubQuery Filter als Berechnungsgrundlage aber wie ?

paulowitz009

Neuer Benutzer
Beiträge
1
Liebes SQL Team,

ich versuche prozentuale Verteilung von Materialnummern zu berechnen aber als Basis (100) für die Berechnung sollen nur die als Valide gekennzeichneten Materialen genommen werden.

Beispiel, siehe unten in der Tabelle
Materialnummer 1, 10, 100, 1000, 10000 gehören der gleichen Material-ID aber Valide sind nur die mit dem Eintrag '1999').

Normalerweise würde ich die Anzahl Materialnummern zusammenzählen (sind 100) und dann
100 / 2 für Mateiralnummer 1 = 20 % (da 2 Stück), für Materialnummer 10 = 30 % usw.

Ich möchte aber nur die validen als Grundlage für 100 nehmen (die gelben)

upload_2020-1-13_14-46-33.png

select "materialnummer", "id", "anzahl, anzahl / (select sum("anzahl") from TABELLE) as Prozent
where "valide" Like '1%'

Die Ausgabe wird ohne die nicht-validen durchgeführt aber die Ausgabe ergibt für Material 1 = 20 % und 10 = 30% und 1000 = 10 %.
Damit hätte ich 60 % als Verteilung und 40 % fehlen...
 

Anhänge

  • upload_2020-1-13_14-41-26.png
    upload_2020-1-13_14-41-26.png
    6,5 KB · Aufrufe: 1
  • upload_2020-1-13_14-43-16.png
    upload_2020-1-13_14-43-16.png
    7,7 KB · Aufrufe: 1
Werbung:
Werbung:
Code:
test=*# select * from paulowitz009 ;
  mat  | id | anzahl | valide
-------+----+--------+--------
     1 | a  |      2 |   1999
    10 | a  |      3 |   1999
   100 | a  |      2 |   2999
  1000 | a  |      1 |   1999
 10000 | a  |      2 |   2999
(5 rows)

test=*# select mat, id, anzahl, anzahl::numeric / (select sum(anzahl) from paulowitz009) prozent from paulowitz009 where valide = 1999;
 mat  | id | anzahl |        prozent         
------+----+--------+------------------------
    1 | a  |      2 | 0.20000000000000000000
   10 | a  |      3 | 0.30000000000000000000
 1000 | a  |      1 | 0.10000000000000000000
(3 rows)

test=*# select mat, id, anzahl, anzahl::numeric / (select sum(anzahl) from paulowitz009 where valide = 1999) prozent from paulowitz009 where valide = 1999;
 mat  | id | anzahl |        prozent         
------+----+--------+------------------------
    1 | a  |      2 | 0.33333333333333333333
   10 | a  |      3 | 0.50000000000000000000
 1000 | a  |      1 | 0.16666666666666666667
(3 rows)

test=*#
 
Zurück
Oben