我希望按日期查找每位唯一身份用户的平均时长。

数据表

| date       | user_id | duration |
|------------|---------|----------|
| 2018-10-02 | 1       | 5        |   
| 2018-10-02 | 1       | 10       |   
| 2018-10-02 | 2       | 15       |   
| 2018-10-03 | 1       | 20       |   
| 2018-10-03 | 2       | 30       |
| 2018-10-04 | 2       | 5        |

预期收益

| date       | ave_duration_per_unique_user |
|------------|------------------------------|
| 2018-10-02 | 15                           |
| 2018-10-03 | 25                           |
| 2018-10-04 | 5                            |

下面的查询根据日期的总持续时间/日期的总条目数给出平均值。 该日期的条目总数应为该日期的唯一user_id数。

SELECT
  DISTINCT date,
  AVG(session_duration)
FROM
  my_table
GROUP BY
  date, distinct_id
ORDER BY
  date
| date       | ave_duration_per_unique_user |
|------------|------------------------------|
| 2018-10-02 | 10                           | // should be 15
| 2018-10-03 | 25                           |
| 2018-10-04 | 5                            |

#1楼 票数:1

您可以按照以下方式进行算术运算:

select date, sum(duration) / count(distinct user)
from my_table
group by date;

我将注意到,我对“每个唯一用户的平均值”的定义有些不同。 第一次约会是(7.5 + 15)/ 2 = 11.25。 但是,这不是您描述的计算。

#2楼 票数:0

要点在此处显示表defs和数据定义,但这是您要查找的查询:

testdb=# select date, avg(user_total)::bigint from (
    select date, user_id, sum(duration) user_total from t group by date, user_id)_
         group by date order by date;
    date    | avg 
------------+-----
 2018-10-02 |  15
 2018-10-03 |  25
 2018-10-04 |   5
(3 rows)

  ask by David Sawatske translate from so

未解决问题?本站智能推荐:

2回复

如何计算PostgreSQL列中的重复值?

嗨,我有一个如下表,我想计算状态列中的重复值。 我不想计算整体重复值。 例如,我只想计算在值变为“空闲”之前出现了多少“离线”。 这是我想要的结果。 谢谢你。
1回复

如何在某些计算中使用PostgreSQL列值作为第二列值

我在 SQL 表中插入了一个巨大的数据集,我想实现这样的目标。 问题是我不想为b和c调用 generate_series 函数。 我想利用的价值a和它进行MOD b和c像下面甚至有效的方式,但我无法理解这怎么能做到有效地我会生成和保存1万条记录。
1回复

如何计算PostgreSQL中的列

我有一个表,其中包含一个人的 id、姓名和年龄作为整数,例如 20。我必须创建一个选择来获取姓名、年龄和出生年份。 我该如何计算? 到目前为止,我有这个,但它不起作用:
1回复

在postgresql中按日期过滤特定列值

我正在尝试编写一个 SQL 查询,它只会按特定日期范围过滤特定列值。在其他情况下,它不会考虑数据范围。 这是我的 SQL 查询: 这是我得到的结果: 我想要的只是当值是 Win 我想按日期过滤,如果是其他值,它不会考虑日期范围。像这样: 我怎样才能通过保持相同的结构来做到这一点?
2回复

如何在postgres中查询最近更新日期的相同类别AVG值?

是否可以在 Postgres 的单个查询中执行如下操作? 表:名称 表:价格 我有一个像上面这样的表结构。 我想要最近更新的相同类别的平均数量。 像下面这样:
2回复

如何在PostgreSQL中获取列值的计数

我有两个表第一个是Status,deviceSerial列.Status位于(1,2,3,4,5)中。 我想获得结果作为状态计数 例如,设备一要获取一行中状态1,状态2,状态3,状态4,状态5的记录数量 这是我的第一张桌子 这是我的第二张桌子 我想得到这些记录作为
1回复

如何在PostgreSQL中合并两列的值?

在我的CASE语句中,我将选择两列的值(b.start_time和c.end_time)。 我以这种方式尝试过,但是没有用。 例如: 开始时间:1000结束时间:1100 结果: 我可以选择一个开始或结束时间值。 但是,如何选择两个值并将其放入一列呢? 这可能吗?
1回复

如何在PostgreSQL中添加列值?

我正在运行的查询是 如上述查询中所述,计算列Shipping_Fee_Charged , Standard_Shipping_Charges , Error并仅显示10行。 现在,我想再次对这些列求和,只有10行。 我该怎么做?