【发布时间】:2021-11-11 09:02:22
【问题描述】:
我已经写了sql查询:
SELECT id
date_diff("day", create_date, date) as day
action_type
FROM "my_database"
它带来了这个:
id day action_type
1 0 upload
1 0 upload
1 0 upload
1 1 upload
1 1 upload
2 0 upload
2 0 upload
2 1 upload
如何更改我的查询以获取列中具有唯一天数的表,以及所有 id 中的平均数“上传”action_type。所以想要的结果必须是这样的:
day avg_num_action
0 2.5
1 1.5
它是 2.5,因为 (3+2)/2(id:1 的 3 次上传和 id:2 的 2 次上传)。 1.5 相同
【问题讨论】:
-
MySQL 或 PostgreSQL 或 Presto?您使用的是哪个 DBMS?
-
@ThorstenKettner presto。但我对主要想法感兴趣
-
我已更改标题以描述您想要的内容。通过描述问题,您会更接近解决方案。 “获取动作次数的平均值”:获取动作次数,然后获取它们的平均值。我在答案中显示的两个步骤。
-
正如 Rahul Biswas 在他的回答中所表明的那样:您也可以用不同的方式描述问题。而不是您的描述 3 + 2(当天每个 ID 的操作数),您可以只说 5(当天的操作数)。因此,您会找到另一个更短更好的解决方案。
-
给定查询的 select 语句中的列名后缺少逗号。