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



我有这个表

//tr>
id cnt1 cnt2
7775 1
7775 2

根据所需的逻辑,可以将group by id与相应的聚合函数一起使用,例如max(或sum(,后者将忽略null值。

-- 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

输出:

2
idcnt1cnt2
77751

使用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  

最新更新