2017-07-20 69 views
0

我對SQL比較陌生,希望能夠拿起幾個簡單的技巧。我設法創建一個查詢,選擇每種不同類型的汽車許可證(chargeType),計算每個發行的號碼(num),並添加一個顯示已發出許可證總數的列(總計 )。代碼如下。SQL中的簡單百分比列

SELECT chargeType, 
     COUNT(chargeType) AS num, 
     (SELECT COUNT(chargeType) 
     FROM permit) AS total 
FROM permit 
GROUP BY chargeType 

我現在想添加一個最後一列,顯示每個許可證類型的百分比。所以每個許可證類型的數量除以總數乘以100,但我正在努力做到這一點。任何人都可以幫忙嗎?

+1

沒有子查詢叫它'percentage'和存儲數字INT值 - MySQL使用''%,因爲它的通配符選擇,所以不必存放''%以數據庫 - 存儲只是int。 – ThisGuyHasTwoThumbs

回答

1

嘗試這樣的事情

SELECT chargeType, 
     num, 
     total, 
     num/NULLIF(total, 0) * 100 AS Percenatge 
FROM (SELECT chargeType, 
       Count(chargeType) AS num, 
       (SELECT Count(chargeType) 
       FROM permit) AS total 
     FROM permit 
     GROUP BY chargeType) a 

NULLIF所使用的零厚望

0

這將工作,以避免分裂。該解決方案的加是存在SELECT

SELECT *, (num * 100/total) as percentage 
FROM 
(
SELECT 
chargeType, 
COUNT(chargeType) AS num, 
total, 
(num * 100/total) as percentage 
FROM 
    (SELECT COUNT(chargeType) as total FROM permit) ttotal 
CROSS JOIN 
    permit 
GROUP BY 
chargeType 
) tsub