我正在使用查询来获得一些我希望使我的应用程序正常工作的结果,但我已经做了一些测试,我发现一些结果不正确。我正在使用Microsoft Visual Studio中的数据库。这是我实际运行的查询
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
我得到了这个结果
但是如果你对Percentagem列的每一行进行求和,它将不会给出100%。你知道我的意思?
这是我在这里添加.0之后得到的结果
((COUNT(Filetype) * 100.0) / (SELECT COUNT(*) FROM infofile))
但我不想得到100%100.0000000
答案 0 :(得分:0)
看起来您正在使用使用整数除法的SQL Server。这解释了结果失败的原因。您可以使用小数点来解决这个问题。
此外,您可以使用grouping sets
获取总数而不是联合,并使用AVG()
简化计算:
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), () );