2015-09-16 164 views
-1

我在表中有四列。SQL计算百分比

+------+-------+------------+---------------+ 
| Year | Month | OrderCount | SaleCount2015 | 
+------+-------+------------+---------------+ 
| 2015 | 1 | 876  |  453  | 
| 2015 | 2 | 764  |  548  | 
| 2015 | 3 | 951  |  632  | 
| 2015 | 4 | ...  |  ...  | 
+------+-------+------------+---------------+ 

我想计算每个月的SalePercentage,但结果返回0。我使用下面的SQL查询。

Select Year, 
     Month, 
     OrderCount, 
     SaleCount, 
     SaleCount/OrderCount AS SalePercentage 
From TableName 

任何人都可以告诉我这个查询的问题吗?谢谢。

+0

为每一行百分比返回0? – ddw147

+1

你使用了什么数据库? –

+0

你使用'sql server'吗? – Praveen

回答

0
SELECT Year, Month, OrderCount, SaleCount, 
    CAST (SaleCount AS FLOAT)/CAST(OrderCount AS FLOAT) AS SalePercentage 
FROM TableName 

您正在使用整数除法所以5/100,但5.0/10.00.5

0

如果您正在使用sql server

如果分割整数那么你得到的整数作为结果;

将一个或两个列的值floatdouble

cast(SaleCount as float) /OrderCount AS SalePercentage 

(SaleCount*1.0)/OrderCount AS SalePercentage 

其更好地检查OrderCount是否zero

case when OrderCount = 0 then 0 
else (SaleCount*1.0)/OrderCount end AS SalePercentage 

演示sqlfiddle

0

使用类型金融计算...

SELECT Year, Month, OrderCount, SaleCount, IIF(OrderCount = 0, 0, CAST(SaleCount AS MONEY)/CAST(OrderCount AS MONEY)) AS SalePercentage FROM TableName 
+0

货币和IIF是产品特定的功能 - 哪些dbms? (没有指定有问题的dbms。) – jarlh

+0

对不起!对于没有指定。 MSSQL 2012和更高版本,这将是... – Esty

0

无论您使用的数据库。你的结果不是显示百分比,而是一小部分。如果您将乘以100它将被解决:

Select Year, 
     Month, 
     OrderCount, 
     SaleCount, 
     (SaleCount*100)/OrderCount AS SalePercentage 
From TableName