0

假设我有下表,

我想选择以开头的所有名称与A以开头的所有名称的比率B

例如

Name

ABC
DEF
VVV
BBB
BCD
ZZZ

所以输出将是 0.5。我想将该输出称为“输出”。所以输出应该是

out

0.5

几乎我想要的是

Select count(*) from table where name like 'A%' / select count(*) from table where name like 'B%'

但在一个查询中。

4

2 回答 2

4

您可以执行以下操作:

select
   (select count(*) from table where name like 'a%') / (select count(*) from table where name like 'b%');

这是一个SQL Fiddle

请注意,如果除数为零,mySql 会将零合并为 null,结果值为null. 这与说 Oracle 不同,它将抛出除数等于零的异常。

这是一个显示此行为的 SQL Fiddle,您可能应该适当地捕获和处理它。

于 2012-08-22T22:13:33.240 回答
0

此查询将满足您的需求:

SELECT ((SELECT COUNT(*) FROM `table` WHERE name LIKE 'A%') /
            (SELECT COUNT(*) FROM `table` WHERE name LIKE 'B%')) AS `out`
于 2012-08-22T22:15:41.130 回答