Amazon web services Amazon Athena-使用存储为字符串的数字查询列

Amazon web services Amazon Athena-使用存储为字符串的数字查询列,amazon-web-services,amazon-athena,Amazon Web Services,Amazon Athena,我有一个保险数据集,其中包括每个县的注册人数。但是,注册数存储为字符串。如何查询数据以查找注册人数超过50人的计划。不幸的是,50作为字符串存储在数据集中,因此我需要了解如何使用athena运行查询。有人能帮忙吗 将字符串强制转换为浮点数,而不是整数,并在强制转换前删除逗号。以下是一个例子: with x AS (SELECT '1,800,850.20' AS "value") SELECT cast(replace(value,',', '') AS REAL) FROM x 因

我有一个保险数据集,其中包括每个县的注册人数。但是,注册数存储为字符串。如何查询数据以查找注册人数超过50人的计划。不幸的是,50作为字符串存储在数据集中,因此我需要了解如何使用athena运行查询。有人能帮忙吗


将字符串强制转换为浮点数,而不是整数,并在强制转换前删除逗号。以下是一个例子:

with x AS 
    (SELECT '1,800,850.20' AS "value")
SELECT cast(replace(value,',', '') AS REAL)
FROM x
因此,您应该使用:

选择 npi, CASTREPLACEtotal提交的费用金额',',与费用金额一样真实 来自CMSAGGERGATEPAYMENT2017 其中CASTREPLACEtotal提交的费用金额,“,”>100000 CASTREPLACEtotal提交的订单费用金额,ASC 限制1000
您是否尝试过从表中选择列作为整数?如果这不起作用,请编辑您的问题,向我们展示如何存储数据的示例,以及用于创建该列的DDL。无效的_CAST_参数:无法将“800850.00”强制转换为INT是我得到的错误。800850是A列中的一个示例值。A列有几个类似的值,但我必须将它们转换为整数,以便使用大于或等于之类的逻辑运算符。当前列的值存储为stringsWell,这是您的问题。800850.00不是数字,因此不能解释为数字。它是千的分隔符,还是两个数字之间有逗号?请编辑您的问题,向我们展示该列中的数据样本,因为它存储在文件中。我确实上传了样本数据。我必须编写一个查询,其中仅显示提交的总费用金额超过100000的行。1035296.00是我的结果中缺少的另一个金额。不支持此类查询服务:AmazonAthena;身份代码:400;错误代码:InvalidRequestException;请求ID:c832b6f7-c66c-41b2-8b55-f3004f2f2edc。以下是我的查询:从CMSAGGERGATEPAYMENT2017订单中选择npi,castreplacetotal_submitted_charge_amount,',',按总已提交_charge_amount Asc limit1000@RajParpani我已把你的问题纳入了答案中。“你错过了真实的部分。”约翰罗滕斯坦看我更新的答案。我没有得到我想要的结果。由于某些原因,雅典娜在where子句中使用>或@RajParpani时没有正确读取数字,但它没有打印为REAL。您可以使用with语句来修复它:将datamart作为SELECT npi,…,CASTREPLACEtotal_submitted_charge_amount,',',与CMSAGGERGATEPAYMENT2017中提交的费用总额一样真实,从数据集市中选择*,其中提交的费用总额>'100000',供应商zipcode='90250'订单按提交的费用总额ASC限额1000@shuvalov这是正确的解决办法。非常感谢你。你能解释一下为什么我的查询不起作用吗?