以下是我的数据在订单表中的配置方式:
我有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/