0
SELECT I.[Order Number], SUM(CAST([Ext Price] AS FLOAT)) AS Rev
FROM stg.Invoices I
where i.[order number] = '64100097'
GROUP BY I.[Order Number]
gibt mir zu finden:jede Zeile des Prozentsatz des gesamten
Order Number Rev
64100097 124079.33
Wenn ich versuche, mit dem% des Umsatzes pro Zeile zu erhalten:
SELECT StgID,
CAST((CAST([Ext Price] AS FLOAT))/(NULLIF(Rev,0)) AS FLOAT)
FROM stg.Invoices I
JOIN (
SELECT I.[Order Number],
SUM(CAST([Ext Price] AS FLOAT)) AS Rev
FROM stg.Invoices I
where i.[order number] = '64100097'
GROUP BY I.[Order Number]
) as TotRev on I.[Order Number] = TotRev.[Order Number]
ich diese:
StgID RevPct
7006418 0.202934687026437
7006427 0.000460995397057673
7006417 0.0274442971282969
7006426 0.000415379418957211
7006422 0.0312703171430729
7006425 0.000609287622684616
7006424 0.0161187201768417
7006420 0.197365669205338
7006419 0.226870986489047
7006428 0.000134752500678397
7006421 0.10299056256993
7006423 0.193384345321658
Die Summe reicht bis: .08333333333
Sollte das nicht alles zusammen 1 ergeben?
Ich verstehe nicht, warum ich nicht jede Zeile zu einem Gesamtprozentsatz von 100% hinzufügen kann.
Hier ist der Beweis dafür, dass sie alle auf die Gesamt aufaddieren sollten:
select stgid, [ext price]
from stg.Invoices
where [order number] = '64100097'
stgid ext price
7006420 24489
7006418 25180
7006427 57.2
7006417 3405.27
7006426 51.54
7006421 12779
7006423 23995
7006422 3880
7006425 75.6
7006424 2000
7006419 28150
7006428 16.72
Sie wiederverwenden Tabelle Aliase nicht. Es ist einfach zu verwirrend. – jarlh
Ihre Zahlen summieren sich auf mehr als 0,083. Der erste ist 0,20. –