sql - 如何找到适合Snowflake环境的SQL语法?

标签 sql snowflake-cloud-data-platform

以下是我的数据在订单表中的配置方式:

enter image description here

我有3个字段:ORDER_ID,即每个ORDER的唯一字段(在整个表中只出现一次),USER_KEY,即每个BUYER的唯一字段(买家可以下多个订单,并且可以在订单中出现多次)表)和 FRUIT,用于标识每个订单购买的商品。

我需要识别购买了多件相同产品的买家 (USER_KEY)。

我有以下查询来识别这些买家:

      select 
        t.user_key from temp t 
inner join (
        SELECT user_key,
        Count(order_id) as [Minimum of 2 Count] from temp group by user_key, fruit 
    ) it on t.user_key = it.user_key and it.[Minimum of 2 Count] > 1
    group by t.user_key;

但是此查询在 SNOWFLAKE 中不起作用。有谁知道如何调整此查询的语法以在 Snowflake 中工作?

谢谢!

最佳答案

标识符用 " 括起来 - [] 可能是 Sybase 或 T-SQL 语法:

select  t.user_key from temp t 
inner join (
        SELECT user_key,
        Count(order_id) as "Minimum of 2 Count" from temp group by user_key, fruit 
    ) it on t.user_key = it.user_key and it."Minimum of 2 Count" > 1
    group by t.user_key;

无论如何,查询可以被重写:

SELECT DISTINCT user_key
FROM temp t
QUALIFY COUNT(order_id) OVER(PARTITION BY user_key, fruit) > 1;

或者:

SELECT DISTINCT user_key
FROM temp 
GROUP BY user_key, fruit
HAVING COUNT(ORDER_ID) > 1;

关于sql - 如何找到适合Snowflake环境的SQL语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70279640/

相关文章:

snowflake-cloud-data-platform - Snowflake 中的大表问题

java - 打印出整个表的列名

sql - 在 SQL 中,如何删除左侧的前 3 个字符以及特定字符后右侧的所有内容

SQL 设置邮政编码相同的日期

sql - 参数化 DDL SQL Snowflake

sql - 从雪花 SQL 中随机选择

php - 文本语料库中的单词匹配非常慢

SQL:在同一个表上组合四个 "where"子句

snowflake-cloud-data-platform - 在 Snowflake 中使用 `DISTINCT ON`

python - 如何使用 pandas 和 sqlalchemy 将 VARIANT 或 ARRAY 数据类型插入到 Snowflake 中