提问人:Guilherme Corbini 提问时间:11/16/2023 最后编辑:Guru StronGuilherme Corbini 更新时间:11/17/2023 访问量:20
普雷斯托 |Athena:非键列中的重复值
Presto | Athena: Duplicated values in not key column
问:
我有下表:
CD_CLIENTE | DE_CLIENTE |
---|---|
12345 | 乔恩一号 |
23456 | 约翰二号 |
34567 | 乔恩三 |
12345 | 乔恩·奥内(Jhon ONEe) |
即使使用 for CD_CLIENT我也在我的结果中使用它两次,因为CD_CLIENT相等,但DE_CLIENTE不同DISTINCT
我的问题:
select distinct taxid as CD_CLIENTE, name as DE_CLIENTE
FROM my_table_name
group by distinct taxid, name
我需要这个查询来实现这个结果,没有重复的CD_CLIENTE:
CD_CLIENTE | DE_CLIENTE |
---|---|
12345 | 乔恩一号 |
23456 | 约翰二号 |
34567 | 乔恩三 |
我试过这个:
select distinct taxid as CD_CLIENTE, name as DE_CLIENTE
FROM my_table_name
group by distinct taxid, name
CD_CLIENTE | DE_CLIENTE |
---|---|
12345 | 乔恩一号 |
23456 | 约翰二号 |
34567 | 乔恩三 |
12345 | 乔恩·奥内(Jhon ONEe) |
并且需要这个:
CD_CLIENTE | DE_CLIENTE |
---|---|
12345 | 乔恩一号 |
23456 | 约翰二号 |
34567 | 乔恩三 |
答:
1赞
Guru Stron
11/17/2023
#1
您正在对两者进行分组,因此您将在输出中获得 和 的所有唯一组合。 在这里无关紧要,因为它使用 select 中的所有列来执行唯一性比较(即您可以删除其中任何一个,或者结果将是相同的)。taxid, name
taxid
name
DISTINCT
group by
distinct
一种选择是从子句中删除并使用聚合 like 或 :name
group by
arbitrary
max
-- sample data
WITH dataset(taxid, name) AS (
VALUES (12345, 'Jhon One'),
(23456, 'Jhon Two'),
(34567, 'Jhon Three'),
(12345, 'Jhon ONEe')
)
-- query
select taxid, max(name)
from dataset
group by taxid;
输出:
出租车 | _col1 |
---|---|
12345 | 乔恩一号 |
34567 | 乔恩三 |
23456 | 约翰二号 |
如果你有第三列,你可以用它来解决名称的“冲突”,你可以使用 / ()。max_by
min_by
max_by(name, some_3rd_col)
评论