在SQL中的多个SELECT结果上执行数学运算
问题描述:
与此问题类似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)
答
你真正的问题是整数与浮点数学。当表达的这两个数字是整数,其结果也将是一个整数:
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
所以要根据第一次查询,在'tbl_LISC'表中的所有记录都是“没有时间”和掉那些“没有时间”,'LISC的= 100'准时? – Ejaz
对不起,错误的名称,编辑,如果它不是100的话,那么它就是发货总数 – MoralesJosue
请为你正在使用的特定RDBMS添加一个标签:mysql,sql-server,oracle等。 – Barmar