2017-07-20 63 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