簡體   English   中英

唯一列值的和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM