mysql转换为十进制(5,2)仍返回0

jobtbby3  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(410)

我想把德国客户的百分比放在这里的客户表中:https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
我正在使用此查询:

SELECT cast((cast((SELECT COUNT(*) FROM Customers WHERE Country = "Germany") as DECIMAL(5,2))/cast((SELECT COUNT(*) FROM Customers) as DECIMAL(5,2))) AS DECIMAL(5,2)) AS PercentageGermans;

出于某种原因,尽管将term的所有成分都转换为十进制5,2,但仍然返回0。
我已经在这个主题上搜索了这么多,找到了这个答案:https://stackoverflow.com/a/26537471/8732285
在这里,我试着做的演员和我做的差不多:

cast((select count(random_int) from test) as decimal(7,2))

强制转换正在应用于完整子查询。它在那里工作,也可以在小提琴上看到:http://sqlfiddle.com/#!15/63252/37
但我不明白我的案子出了什么问题。

w3nuxt5m

w3nuxt5m1#

我想把德国顾客的百分比放在顾客表上。
我想你是太过分了。我将你的问题表述为:

select avg(country = 'Germany') ratio_germans from customers

这会给你一个介于 0 以及 1 ,这代表了德国客户的比例。你可以把它乘以100变成一个百分比。假设你想要一个有两个小数位的百分比,那么:

select round(avg(country = 'Germany') * 100, 2) percent_germans from customers

相关问题