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很奇怪:)