如何将共享一个相同值的多行折叠成一行 PRESTO SQL

How do I collapse multiple rows that shares one identical value into a single row PRESTO SQL

我有这个table

id cnt1 cnt2
7775 1
7775 2

我想合并行,这样就可以了

id cnt1 cnt2
7775 1 2

我试过自连接,但它只将行附加到底部。有任何想法吗?谢谢!

使用SubQueryjoin如下

SELECT T1.Id,
       Cnt1,
       Cnt2
FROM   (SELECT Id,
               Cnt1
        FROM   Table
        WHERE  Cnt1 IS NOT NULL) T1
       JOIN (SELECT Id,
                    Cnt2
             FROM   Table
             WHERE  Cnt2 IS NOT NULL) T2
         ON T1.Id = T2.Id  

根据所需的逻辑,您可以将 group by id 与相应的 aggregate function, for example max(或 sum)一起使用,这将忽略空值。

-- sample data
WITH dataset (id, cnt1, cnt2) AS (
    VALUES (7775, 1, null),
        (7775, null, 2)
) 

-- query
select id,
    max(cnt1) cnt1,
    max(cnt2) cnt2
from dataset
group by id

输出:

id cnt1 cnt2
7775 1 2