2017-02-12 2 views
0

Kann ein doppelter Spalteneintrag basierend auf einer Bedingung in SQL auf null gesetzt werden?Kann ein doppelter Spalteneintrag basierend auf einer Bedingung in SQL auf null gesetzt werden?

Prod | service_type | Units | Total_prod_quantity 
--------------------------------------------------------------- 
Prod_1  Svc_type_1  20   100 
Prod_1  Svc_type_2  50   100 
Prod_1  Svc_type_3  30   100 
Prod_2  Svc_type_1  25   50 
Prod_2  Svc_type_2  25   50 

Wenn ich versuche, den gesamten Service legt Prozentsatz an einem Zeilenebene zu berechnen, ich die richtigen Zahlen zu erhalten (20/100 = 0,2, 50/100 = 0,5). Aber wenn ich versuche, den Gesamt-Service-Prozentsatz auf Produktebene zu berechnen, sollte ich ((20 + 50 + 30)/100 = 1 und nicht (20 + 50 + 30)/(100 + 100 + 100) = 0,3 erhalten). Gibt es auf jeden Fall die doppelten Spalteneinträge basierend auf einer Bedingung, wie unten gezeigt, null?

Prod | service_type | Units | Total_prod_quantity 
--------------------------------------------------------------- 
Prod_1  Svc_type_1  20   100 
Prod_1  Svc_type_2  50   0 
Prod_1  Svc_type_3  30   0 
Prod_2  Svc_type_1  25   50 
Prod_2  Svc_type_2  25   0 
+0

Wenn es immer wieder zurückkehren wird '1' - warum alles alles berechnen, zu? –

Antwort

0

Sie können wie folgt zusammenfassen, ohne die Tabellendaten zu ändern:

select 
    prod, 
    sum(units)/max(total_prod_quantity) 
from table 
group by prod 
Verwandte Themen