樹形結構資料彙總查詢解決方案 優化求助

2021-09-29 14:21:30 字數 1621 閱讀 6648

最近遇到乙個地區資料彙總的問題,地區下的位址呈樹形結構,(簡化結構)如a市下有b、c區,b區下有d、e街道。先要查詢所有地區的人數(包括子區域),如a的人數=直屬a的人數+b的人數+c的人數+d的人數+e的人數。c的人數=直屬c的人數。

地區直屬人數如下

查詢結果如下

實現如下

with a as(

select 'a' 位址, 10 總人數, 8 正常人數, 2 欠費人數 from dual

union all

select 'b', 20, 15, 5 from dual

union all

select 'c', 30, 29, 1 from dual

union all

select 'd', 40, 20, 20 from dual

union all

select 'e', 50, 32, 18 from dual

),b as(

select 'b' 位址, 'a' 上級位址 from dual

union all

select 'c', 'a' from dual

union all

select 'd', 'b' from dual

union all

select 'e', 'b' from dual

union all

select 'a', null from dual

),c as(

select 'a' 位址 from dual

union all

select 'b' from dual

union all

select 'c' from dual

union all

select 'd' from dual

union all

select 'e' from dual

)select c.位址,

(select sum(a.總人數) from a where a.位址 in (select b.位址 from b start with b.位址 = c.位址 connect by prior b.位址 = b.上級位址)) 總人數,

(select sum(a.正常人數) from a where a.位址 in (select b.位址 from b start with b.位址 = c.位址 connect by prior b.位址 = b.上級位址)) 正常人數,

(select sum(a.欠費人數) from a where a.位址 in (select b.位址 from b start with b.位址 = c.位址 connect by prior b.位址 = b.上級位址)) 欠費人數

from c;

Hive 資料傾斜解決方案(調優)

在做shuffle階段的優化過程中,遇到了資料傾斜的問題,造成了對一些情況下優化效果不明顯。主要是因為在job完成後的所得到的counters是整個job的總和,優化是基於這些counters得出的平均值,而由於資料傾斜的原因造成map處理資料量的差異過大,使得這些平均值能代表的價值降低。hive的...

高併發解決方案 資料庫高併發解決方案部署優化

乙個專案剛開始的時候是為了實現基本功能,隨著版本和功能的迭代,大資料和高併發成了軟體設計必須考慮的問題 本質很簡單,乙個是慢,乙個是等。兩者是相互關聯的,因為慢,所以要等,因為等,所以慢,解決了慢,也就解決了等,解決了等,也就解決了慢。關鍵是如何解決慢和等?核心 乙個是短,乙個是少,乙個是分流,最後...

海量資料問題和解決方案蒐集彙總

傳統關係型資料的問題 1.擴充套件困難 由於存在類似join這樣多表查詢機制,使得資料庫在擴充套件方面很艱難 2.讀寫慢 這種情況主要發生在資料量達到一定規模時由於關係型資料庫的系統邏輯非常複雜,使得其非常容易發生死鎖等的併發問題,所以導致其讀寫速度下滑非常嚴重 3.成本高 企業級資料庫的licen...