按另一列计算一列

Count a column by another distinct column

所以我想用另一个不同的列计算特定列的总和

我的table长这样

日期 用户 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;

假设如下:

代码:

结果:

我希望它对给定的场景是正确的。