[英]SUM of distinct and unique column values
site device site_count
=================================
1 AB1 45
1 AB2 45
1 AB3 45
1 AB4 45
1 AB5 45
2 AB6 70
2 AB7 70
2 AB8 70
3 AB9 100
3 A10 100
4 A11 10
通過將唯一站點的站點計數值相加得出以下總和(site_count),即45 + 70 + 100 + 10 = 225(與站點出現的次數無關)。
site device site_count sum(site_count)
====================================================
1 AB1 45 225
1 AB2 45 225
1 AB3 45 225
1 AB4 45 225
1 AB5 45 225
2 AB6 70 225
2 AB7 70 225
2 AB8 70 225
3 AB9 100 225
3 A10 100 225
4 A11 10 225
您可以發布查詢以在一個查詢中獲取總和(site_count)和其他列的值。 結果集顯示在上方。
您可以使用sum on:
select site, device, site_count, sum(distinct site_count) over ()
from mytable;
編輯:當然,您可以在沒有窗口功能的情況下執行相同的操作,但這可能會更慢:
select site, device, site_count, (select sum(distinct site_count) from mytable)
from mytable;
新編輯:我誤讀了您的請求。 在下面的評論中,您已經解釋說,您並不是在尋找不同的站點數,而只是尋找所有站點的站點數之和。 因此,這是我的答案的更新。
不幸的是,您並沒有像您應該的那樣有一個站點表和一個設備表,但是只有一個表擁有站點的設備多余。 您應該更改它。 話雖如此,當然即使對於像您這樣的不利數據模型,也仍然可以選擇數據。 這只是更多的工作。
您需要每個站點一次站點計數。 因此,按站點分組並獲取最小,最大或平均站點計數-它們都應該與冗余存儲的值相同。 然后將這些站點計數相加:
select site, device, site_count,
(
select sum(distinct_site_count)
from
(
select min(site_count) as distinct_site_count from mytable group by site
)
)
from mytable;
或更緊湊:
select site, device, site_count,
(select sum(min(site_count)) from mytable group by site)
from mytable;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.