簡體   English   中英

按另一個不同的列計算一列

[英]Count a column by another distinct column

所以我想用另一個不同的列來計算某列的總和

我的桌子看起來像這樣

日期 用戶 ID 重量
5/23 姓名 id1 1
5/23 姓名 id2 0.5
5/23 姓名 id2 0.2
5/23 名稱 2 id1 2

預期的結果是:

日期 用戶 數數
5/23 姓名 1.5
5/23 名稱 2 2

現在我有

select 
, date
, name
, count(distinct id)

from table


group by
  date
  , name

這導致僅將唯一 ID 計為 1,沒有分配權重

日期 用戶 數數
5/23 姓名 2
5/23 名稱 2 2

在任何日期,每個 ID 都可能有多個用戶操作的記錄,它們都分配了不同的權重。 我想計算用戶在所有日期、所有唯一 ID 的這些操作的總和。 因此,如果他在某個日期為某個 ID 執行了權重為 0.5 和 0.2 的操作,它只會計算最大權重,即 0.5。 但如果他還在同一天對另一個 ID 執行了另一個操作,比如權重為 0.7,那么我希望在該日期看到的最終結果將是 0.7+0.5,即 1.2

唔。 . . 似乎您想要每個日期、用戶和 id 的最大值,然后是平均值:

select date, user, avg(max_weigh * 1.0)
from (select date, user, id, max(weight) as max_weigh
      from t
      group by date, user, id
     ) dui
group by date, user;

假設如下:

在此處輸入圖像描述

代碼:

在此處輸入圖像描述

結果:

在此處輸入圖像描述

我希望它對於給定的場景是正確的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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