按另一列计算一列
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;
假设如下:
代码:
结果:
我希望它对给定的场景是正确的。
所以我想用另一个不同的列计算特定列的总和
我的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;
假设如下:
代码:
结果:
我希望它对给定的场景是正确的。