我有一张桌子,上面有这样的字段
F1 F2 F3 F4
1 4 A 5
2 4 A 5
3 4 B 5
4 4 C 5
5 4 D 5
我想删除F3是重复项的所有行,因此为了在字段F3中不获取重复值:
F1 F2 F3 F4
1 4 A 5
3 4 B 5
4 4 C 5
5 4 D 5
谢谢!
答案 0 :(得分:1)
您可以使用聚合:
select any_value(f1), any_value(f2), f3, any_value(f4)
from t
group by f3;
如果您希望所有值都来自特定行,则可以使用row_number()
:
select t.* except (seqnum)
from (select t.*,
row_number() over (partition by f3 order by f3) as seqnum
from t
) t;
您可以调整order by
键以指定要保留的行(例如最大的f1
值或其他值)。
另一种方法是:
select as value any_value(t)
from t
group by f3;
答案 1 :(得分:1)
以下是用于BigQuery标准SQL
#standardSQL
SELECT AS VALUE ANY_VALUE(t)
FROM `project.dataset.table` t
GROUP BY F3
您可以使用问题中的示例数据来进行测试,如上示例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 F1, 4 F2, 'A' F3, 5 F4 UNION ALL
SELECT 2, 4, 'A', 5 UNION ALL
SELECT 3, 4, 'B', 5 UNION ALL
SELECT 4, 4, 'C', 5 UNION ALL
SELECT 5, 4, 'D', 5
)
SELECT AS VALUE ANY_VALUE(t)
FROM `project.dataset.table` t
GROUP BY F3
有结果
Row F1 F2 F3 F4
1 1 4 A 5
2 3 4 B 5
3 4 4 C 5
4 5 4 D 5