2015-05-08 155 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