如何选择3列,然后仅从所选的两列中删除重复项



我正在处理一个包含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()col1col2删除重复项:

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

最新更新