我正在处理一个包含3列的表,所有列都具有整数数据类型。
我正在尝试将以下PySpark代码复制到SQl 中
df = my_table.select('column_1', 'column_2', 'column_3')
df = df.drop_duplicates(['column_1', 'column_2'])
在上面的代码中,我试图选择三列,然后只从前两列中删除重复项。
我试过使用
SELECT
MIN(column_1), MIN(column_2), column_3
FROM my_table
GROUP BY column_3
看起来它确实完成了任务,但输出与PySpark输出不相似。
请告知。
注意:我实际上是在dbt上写这个查询,所以我不能指定SQL版本
我想你可以尝试一下。
SELECT mt1.MIN(col1) as min1, mt2.MIN(col2) as min2, mt1.col3
FROM my_table as mt1
JOIN my_table as mt2 on mt1.id = mt2.id
WHERE min1 != min2
GROUP BY col3;
我能够在以下查询中使用ROW_NUMBER()
从col1
和col2
删除重复项:
SELECT col1, col2, col3
FROM
(
SELECT
col1, col2, col3,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1 DESC) AS row_num
FROM table_name
)
WHERE row_num = 1