2015-05-08 36 views
2

与此问题类似How does one perform math on multiple SELECT results?在SQL中的多个SELECT结果上执行数学运算

不能做矿工。

我想确定按时发送的货件的百分比。

要做到这一点,我知道我必须:

1)选择发送的总出货量。

Select COUNT(*) AS TotalShipments From tbl_LISC 

2)选择总出货发送ONTIME

Select COUNT(*) AS TotalOnTime From tbl_LISC WHERE tbl_LISC.LISC = 100 

3)除以2分的结果和由100((TotalOnTime/TotalShipments相乘)* 100

继作为例子的线索答案我试过了

SELECT TotalShipped, TotalOnTime, TotalShipped/TotalOnTime as LISC 
FROM (SELECT COUNT(Select *From tbl_LISC) AS TotalShipped, 
      COUNT(*) as TotalOnTime 
      FROM tbl_LISC 
      WHERE LISC = 0) 
+0

所以要根据第一次查询,在'tbl_LISC'表中的所有记录都是“没有时间”和掉那些“没有时间”,'LISC的= 100'准时? – Ejaz

+0

对不起,错误的名称,编辑,如果它不是100的话,那么它就是发货总数 – MoralesJosue

+0

请为你正在使用的特定RDBMS添加一个标签:mysql,sql-server,oracle等。 – Barmar

回答

4

你真正的问题是整数与浮点数学。当表达的这两个数字是整数,其结果也将是一个整数:

select 2/3 -- 0 

所以,为了保存小数精度,简单地使号码之一中表达的十进制/ float值:

select 2.0/3 -- 0.666666 

所以,试试这个关于大小:

select 
sum(iif(tbl_LISC.LISC = 100, 1, 0)) as OnTime 
,count(*) as Total 
,sum(iif(tbl_LISC.LISC = 100, 1.0, 0.0))/nullif(count(*), 0) as Percentage 
from tbl_LISC as l 
+1

谢谢@canon,工作得很好。 – MoralesJosue