计算列中的两个选择语句为%

时间:2016-09-28 02:15:10

标签: sql sql-server

是否可以将两个Select语句组合成一个表中的2个单独列,然后将它们分成%?

Select count(*) as 'Quote with VIN' 
From BSIT_ERA_RAW_DATA.dbo.QUOTE  
where LEN(inv_vehicle_id) = 17

使用下面的第二个Select语句:

select count(*) as 'Number of Quote'
from BSIT_ERA_RAW_DATA.dbo.QUOTE

预期结果如下所示:

Quote with VIN | Number of Quote | Result
-----------------------------------------
116260         | 195850          | 59.36%

2 个答案:

答案 0 :(得分:2)

您可以使用条件聚合将两个查询的逻辑组合到一个查询中:

SELECT SUM(CASE WHEN LEN(inv_vehicle_id) = 17 THEN 1 END) AS `Quote with VIN`,
       COUNT(*) AS `Number of Quote`,
       CONCAT(ROUND(100 * SUM(CASE WHEN LEN(inv_vehicle_id) = 17 THEN 1 END) / COUNT(*), 2),
              '%') AS Result
FROM BSIT_ERA_RAW_DATA.dbo.QUOTE

答案 1 :(得分:0)

您可以使用条件聚合。在MySQL中,您可以使用快捷方式执行此操作:

select sum(len(inv_vehicle_id) = 17)) as `Quote with VIN`,
       count(*) as `Number of Quote`
From BSIT_ERA_RAW_DATA.dbo.QUOTE  ;

在大多数其他数据库中,您需要使用case

另外,不要对列名使用单引号。这是一个等待发生的错误。最好的选择是选择不需要转义的名称。但是如果你这样做,请使用MySQL转义字符(反引号)。

相关问题