我有一个名为emp_attendance的表,其中有两列log_in_date和user_id 。 我只想获取所有给定 user_ids 的所有maximum ( latest ) log_in dates (给出了 100 多个 user_ids)。 意思是,我只想知道特定用户在哪个最新(最大) ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我希望按日期查找每位唯一身份用户的平均时长。
数据表
| 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 |
您可以按照以下方式进行算术运算:
select date, sum(duration) / count(distinct user)
from my_table
group by date;
我将注意到,我对“每个唯一用户的平均值”的定义有些不同。 第一次约会是(7.5 + 15)/ 2 = 11.25。 但是,这不是您描述的计算。
要点在此处显示表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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.