【问题标题】:Create a separate table based on select condition query in snowflake根据雪花中的选择条件查询创建单独的表
【发布时间】:2021-06-01 15:19:05
【问题描述】:

我正在使用带有条件的选择查询来删除重复项。如下查询

select * from (
select LOCATIONID, OBSERVATION_TIME_UTC, max(ROW_KEY) ROW_KEY from OLD_TABLE group by LOCATIONID, OBSERVATION_TIME_UTC
)

此处将仅显示 3 列和 LOCATIONID、OBSERVATION_TIME_UTC、ROW_KEY 的 15 列

我想创建一个单独的表,其中包含所有列,并且列的顺序不应更改。

我试过下面的查询

create or replace table NEW_TABLE as
select * from (
select LOCATIONID, OBSERVATION_TIME_UTC, max(ROW_KEY) ROW_KEY from OLD_TABLE group by LOCATIONID, OBSERVATION_TIME_UTC
)

但是上面的查询只给出了 3 列,而我需要新表中的数据(它应该包含所有列)。 有人可以更正我的查询吗!

【问题讨论】:

  • 您到底想达到什么目的?您最内部的 SELECT 不会选择所有 15 列,并且最重要的是使用 GROUP BY,因此您不能在当前语句中真正拥有它。

标签: snowflake-cloud-data-platform


【解决方案1】:

Qualify 可用于获取每个位置和观察时间的最高行(row_key):

 -- create or replace new_table as
Select *
From old_table
Qualify row_number() over(partition by location_id, observation_time_utc 
                          order by row_key desc) = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2018-07-06
    • 2016-01-23
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多