2017-01-05 4 views
0

Ich habe Tabelle wie folgt mit allen Feldern außer Prozentsatz. Basierend auf der Gesamtzahl der Fälle muss ich den Prozentsatz für jede Fall-ID berechnen. Für eine einfache Interpretation wähle ich Nummern wie unten. Die Gesamtzahl der Fälle für alle caseids beträgt also 100, wobei die ID 35 Fälle umfasst und der Prozentsatz 35 beträgt. Mit welchem ​​Skript kann ich diese Gesamtprozentwerte abrufen und in der Tabelle entsprechend aktualisieren.SQL Prozentsatz basierend auf vorhandenen Daten in der Tabelle berechnen und aktualisieren

CaseID NumHighCases NumMedCases NumLowCases TotalCases TotalPerc 
1   10   20   5   35   35% 
2   5    5   5   15   15% 
3   8    12   20   40   40% 
4   3    4   3   10   10% 
+1

Warum sogar die Tabelle aktualisieren? Warum berechnen Sie dies nicht bei jeder Gelegenheit, wenn Sie es brauchen? – Mureinik

+1

Was ist das SQL, um das oben genannte zu erreichen? Es scheint, dass Sie nur eine 'Total_cases/sum (total_cases) über (Partition durch Null) als totalPerc' in der SQL benötigen, um die Daten auszuwählen. – xQbert

Antwort

4
TotalPerc = (TotalCases*100.0)/sum(TotalCases) over (partition by null) 

Beachten Sie die * 100 ist Präzision hinzuzufügen, sonst wird ein int/int einen int zurück.

+0

Ich dachte [2008] (https://msdn.microsoft.com/en-us/library/ms189461.aspx) für Fensterfunktionen ... aber vielleicht irre ich mich. – xQbert

+0

Sorry John, ich hatte meinen Kommentar gelöscht. Ich sehe, ich dachte mir, dies auf einmal zu tun, anstatt zwei Auswahlen zu machen, wäre natürlich effizienter. Ich erkannte, dass ich die Frage als OP interpretierte, die eine statische Tabelle mit all diesen vorher existierenden Spalten hatte, während ich annahm, dass Ihre und xQberts Lösung mit dem Verständnis ist, dass OP versucht, diese Information während eines SELECT zu berechnen -Fliege. Ist das korrekt? – Santi

+0

@xQbert Ich denke, du hast Recht. Es ist schon eine Weile her, seit 2008. Ich wage Sie, fragen Sie mich, was ich für das Abendessen letzte Nacht :) –

Verwandte Themen