首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为SQL中的一组列生成相同的UUID

为SQL中的一组列生成相同的UUID
EN

Stack Overflow用户
提问于 2022-03-08 12:00:38
回答 1查看 493关注 0票数 1

请有人建议一种编写SQL查询的方法,它将生成一个唯一的UUID,对于athena中的一组列来说,UUID是相同的。

例如,我有一个这样的表,其中我想为columns1、columns2和columns3创建一个UUID。

代码语言:javascript
复制
column1 | column2 | column3 | column 4
2016    | 101     | 1       | 25
2016    | 101     | 1       | 59
2017    | 105     | 2       | 57
2017    | 105     | 2       | 78

输出1必须如下所示

代码语言:javascript
复制
ID      | column1 | column2 | column3 | column 4
UUID-1  | 2016    | 101     | 1       | 25
UUID-1  | 2016    | 101     | 1       | 59
UUID-2  | 2017    | 105     | 2       | 57
UUID-2  | 2017    | 105     | 2       | 78

输出2:应该是

代码语言:javascript
复制
ID      | count |column1 | column2 | column3
UUID-1  | 2     |2016    | 101     | 1
UUID-2  | 2     |2017    | 105     | 2

我知道可以对输出1进行分组以生成输出2,有人能建议我如何生成输出1吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-03-08 12:20:56

您可以尝试使用uuid()函数。

代码语言:javascript
复制
SELECT uuid() id,
       COUNT(*),
       column1 ,
       column2 ,
       column3
FROM T
GROUP BY column1 ,
       column2 ,
       column3

编辑

我看到你编辑你的问题,你可以尝试使用子查询和自我连接获取output1

代码语言:javascript
复制
SELECT t1.*,t2.column4
FROM (
    SELECT DISTINCT uuid() id,
           column1 ,
           column2 ,
           column3
    FROM T
) t1 INNER JOIN T t2 
ON t1.column1 = t2.column1
AND t1.column2 = t2.column2
AND t1.column3 = t2.column3

另一种方法是尝试使用max窗口函数,使每个column1column2column3列只获得一个GUID。

代码语言:javascript
复制
select max(id) over (partition by column1,column2,column3) as id, 
       column1,
       column2,
       column3,
       column4
from 
(
    SELECT uuid() id,*
    FROM T
) t1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71394705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档