【问题标题】:How to select duplicates based on specific columns如何根据特定列选择重复项
【发布时间】:2020-03-26 14:20:51
【问题描述】:

我想根据两列计算不同的值,并仅根据这些列的不同值复制清理后的表。

原始表格有 5 列。

b_id  | col1  | col2 | col3 | col4 
1     | c11   | c21  | c31  | c41
2     | c21   | c22  | c23  | c24
3     | c31   | c22  | c23  | c24
4     | c41   | c42  | c44  | c44
4     | c41   | c52  | c53  | c54
6     | c61   | c62  | c63  | c64
6     | c61   | c72  | c73  | c74
7     | c71   | c72  | c73  | c74

我只想选择:

b_id | col1  | col2 | col3 | col4 
1     | c11   | c21  | c31  | c41
2     | c21   | c22  | c23  | c24
3     | c31   | c22  | c23  | c24
4     | c41   | c42  | c44  | c44
6     | c61   | c62  | c63  | c64
7     | c71   | c72  | c73  | c74

因为 b_id & col1 有重复。我不介意 col2、col3 和 col4 上是否存在重复项。

我试过了:

DROP TABLE IF EXISTS 
new_table

CREATE TABLE 
new_table

AS (

select distinct 
b_id
, col1

from 
old_table

WHERE
col2 IN (val1, val2, val3, val4)
    AND col4 = xxx

);

但这会选择我需要的不同值,但只有这两列而不是其余列...:-/

有什么想法吗?谢谢!

【问题讨论】:

  • Redshift 需要它
  • 有人可以帮忙吗?

标签: sql amazon-redshift


【解决方案1】:

这应该可以解决问题:

select distinct b_id, col1,max(col2),max(col3),max(col4)
from old_tables
group by b_id, col1;

(只要您不关心将从 col2-col4 中获取哪个值)

【讨论】:

    猜你喜欢
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多