【问题标题】:CAST a date in Presto to next count将 Presto 中的日期投射到下一个计数
【发布时间】:2019-01-26 17:42:19
【问题描述】:

我想用 JSON 文件查询 Athena。我将 creation_date 与 id 相匹配,因为我想获得一个热图,在 Y 轴上我有月份,在 X 轴上有天,我计算里面的 id。我创建了一个包含 2 列的表: creation_date 日期,id int。接下来我用下面的代码查询:

SELECT CAST(creation_date as DATE) as ad_creation, 
       COUNT(id) as Total_ads 
FROM default.test 
GROUP BY CAST(creation_at_first as DATE)

不幸的是,我收到了这个错误:

DatabaseError: sql 执行失败:SELECT CAST(creation_date as DATE) as ad_creation, COUNT(id) as Total_ads FROM default.testing_fresh_1 GROUP BY CAST(creation_date as DATE)

当我查询Select * from...

我得到的结果格式如下:

creation_date   
2018-07-01 02:02:09 
2018-06-05 01:39:30 
2018-05-16 21:28:48 
2017-04-23 17:03:53

知道我做错了什么吗?

【问题讨论】:

    标签: sql amazon-athena presto amazon-sagemaker


    【解决方案1】:

    从您的select * 结果集中,我猜您的表中没有ID 列。

    您可以尝试使用COUNT(*) 而不是COUNT(id)

    SELECT CAST(creation_date as DATE) as ad_creation, 
          COUNT(*) as Total_ads 
    FROM default.test 
    GROUP BY CAST(creation_date as DATE)
    

    【讨论】:

    • 我还有一个问题。是否有机会从列 ID 中删除重复项?结果发现有一些重复的 id 值...
    • 您想保留哪个 ID?最小还是最大?我想有办法,但取决于你的逻辑。
    • 我正在从另一个更大的表中提取 2 个列。结果发现有一个名为 operation 的列,其参数为 insert、delete、update,因此我正在计算的 id 可以重复。当我使用 sql 查询更大的表时,可能我需要在 python 中删除重复项而不是在之前的一步。
    • @Michel 我似乎喜欢是另一个问题。您可以创建一个新问题线程并将问题详细信息放入新问题中。
    • 基本上我自己管理好了,只好用具体的操作类型加上where:)。
    【解决方案2】:

    试试下面的代码。

    SELECT CAST(creation_date as DATE) as ad_creation, 
            COUNT(id) as Total_ads 
    FROM default.testing_fresh_1 
    GROUP BY ad_creation
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2012-04-13
      • 2011-08-30
      相关资源
      最近更新 更多