【发布时间】:2020-06-18 09:47:46
【问题描述】:
我正在尝试在此处的客户表中获取德国客户的百分比: 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;
由于某种原因,我仍然返回 0,尽管将终端的所有成分转换为十进制 5,2。
我已经在该主题上搜索了 SO 并找到了这个答案: https://stackoverflow.com/a/26537471/8732285
在这里,我正在尝试做的演员表几乎和我做的一样:
cast((select count(random_int) from test) as decimal(7,2))
演员表被应用于完整的子查询。它在那里工作,也可以在小提琴上看到: http://sqlfiddle.com/#!15/63252/37
但我不明白我的情况出了什么问题。
【问题讨论】:
-
我没有收到
0。我得到An unspecified error occurred.这可能是因为您引用了Germany错误,并且系统正在寻找具有该名称的列,而不是字符串?除非 MySQL 默认允许使用双引号。或者它可能是其他的东西。无论如何,您引用的代码不会产生您在您引用的网站上引用的错误,因此请仔细检查您是否在所有情况下都发布了最新信息。 -
@underscore_d 这很奇怪,当我复制粘贴查询时,我仍然得到 0,而不是 unspec 错误。Oo
标签: mysql sql select group-by average