2016-05-10 17 views
0

Ich verwende eine Abfrage, um einige Ergebnisse zu erhalten, die ich meine Anwendung funktioniert, aber ich habe einige Tests gemacht, und ich habe festgestellt, dass einige Ergebnisse nicht korrekt sind. Ich verwende die Datenbank von Microsoft Visual Studio. Dies ist die Abfrage, die ich eigentlichSQL-Abfrage zu SUMME und COUNT

SELECT Filetype AS 'Extensão', 
    COUNT(*) AS 'Nº total de extensões', 
    ((COUNT(Filetype) * 100)/(SELECT COUNT(*) FROM infofile)) AS 'Percentagem (%)', 
    SUM(Filesize) AS 'Total(KB)' 
    FROM infofile 
    GROUP BY Filetype 
    UNION ALL 
    SELECT NULL, 
    COUNT('Nº total de extensões'), 
    ((COUNT(Filetype) * 100)/(SELECT COUNT(Filetype) FROM infofile)), 
    SUM(Filesize) 
    FROM infofile 

leite Und ich bin immer diese

enter image description here

Ergebnisse, aber wenn Sie jede Zeile in der Spalte Percentagem SUM es wird die 100% nicht geben. Du weißt was ich meine?

Dies ist das Ergebnis, das ich nach hier Gelangen 0,0 ((COUNT(Filetype) * 100.0)/(SELECT COUNT(*) FROM infofile)) Aber ich will nicht mit 100,0000000

+1

Da ein Prozentsatz 3,2345 in Wirklichkeit sein kann und Sie nur 3. Natürlich drucken diese Summiert sich nicht richtig. –

+2

Bitte kennzeichnen Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –

Antwort

0

das Ergebnis der 100% bekommen Sie, wie Sie SQL Server verwenden sieht die ganze Zahl verwendet Aufteilung. Das erklärt, warum die Ergebnisse aus sind. Sie können das beheben, indem Sie Dezimalpunkte verwenden.

Sie können aber auch grouping sets verwenden, um die insgesamt eher als eine Vereinigung zu erhalten und die Berechnung vereinfachen, indem AVG() mit:

SELECT Filetype AS [Extensão], 
     COUNT(*) AS 'Nº total de extensões', 
     AVG(FileType * 100.0) AS [Percentagem (%)], 
     SUM(Filesize) AS [Total(KB)] 
FROM infofile 
GROUP BY GROUPING SETS ((Filetype),()); 
+0

Ich habe meine Abfrage verwendet, aber anstatt Ihre Abfrage auszuführen, habe ich gerade 100 zu 100.0 geändert. Ich denke, das ist in Ordnung, oder? –

+0

Sie können sehen, dass –

+0

Ich habe gerade festgestellt, dass ich diese Methode nicht verwenden kann, weil die Spalte, die ich versuche, den Prozentsatz ist Nvarchar. Also ich kann dich AVG nicht –