Mysql 计算比率

Mysql 计算比率,mysql,count,Mysql,Count,假设我有下表 我想选择以A开头的所有名称与以B开头的所有名称的比率 比如说 Name ABC DEF VVV BBB BCD ZZZ 因此,输出为0.5。我想把那个输出称为“输出”。 所以输出应该是 out 0.5 我想要的是 从名称为“A%”的表中选择计数(*)/从名称为“B%”的表中选择计数(*)' 但是在一个查询中 您可以执行以下操作: select (select count(*) from table where name like 'a%') / (select cou

假设我有下表

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

比如说

Name

ABC
DEF
VVV
BBB
BCD
ZZZ
因此,输出为0.5。我想把那个输出称为“输出”。 所以输出应该是

out

0.5
我想要的是

从名称为“A%”的表中选择计数(*)/从名称为“B%”的表中选择计数(*)
'


但是在一个查询中

您可以执行以下操作:

select
   (select count(*) from table where name like 'a%') / (select count(*) from table where name like 'b%');
这是一个例子

请注意,如果除数为零,mySql将把零合并为null,结果值将为
null
。这与甲骨文不同,甲骨文会抛出一个除数等于零的异常


显示此行为,您可能应该适当地捕获和处理此行为。

您可以执行以下操作:

select
   (select count(*) from table where name like 'a%') / (select count(*) from table where name like 'b%');
这是一个例子

请注意,如果除数为零,mySql将把零合并为null,结果值将为
null
。这与甲骨文不同,甲骨文会抛出一个除数等于零的异常


显示此行为,您可能应该对其进行适当的捕获和处理。

此查询将满足您的需要:

SELECT ((SELECT COUNT(*) FROM `table` WHERE name LIKE 'A%') /
            (SELECT COUNT(*) FROM `table` WHERE name LIKE 'B%')) AS `out`

此查询将执行您需要的操作:

SELECT ((SELECT COUNT(*) FROM `table` WHERE name LIKE 'A%') /
            (SELECT COUNT(*) FROM `table` WHERE name LIKE 'B%')) AS `out`

+1非常好用@安克尔用这个。JOIN不是那么可读。是的,我认为self-JOIN可以归结为相同的东西。我不会想太多。如果“B%”的第二个计数是0怎么办?@valexhome-mySql似乎将0合并为null,而
x/null
null
。我只是在SQL小提琴上试了一下。然而,Oracle将抛出“除数等于零”异常。有趣!在Postgres和MS SQL上也尝试过,两者都会抛出被零除的错误。我猜mySql很奇怪:)+1工作得很好@安克尔用这个。JOIN不是那么可读。是的,我认为self-JOIN可以归结为相同的东西。我不会想太多。如果“B%”的第二个计数是0怎么办?@valexhome-mySql似乎将0合并为null,而
x/null
null
。我只是在SQL小提琴上试了一下。然而,Oracle将抛出“除数等于零”异常。有趣!在Postgres和MS SQL上也尝试过,两者都会抛出被零除的错误。我猜mySql很奇怪:)