gpt4 book ai didi

sql - 使用 SQL 获取平均值

转载 作者:行者123 更新时间:2023-12-02 05:57:06 25 4
gpt4 key购买 nike

我最近在求职考试中遇到了这个问题。我有下表。

TABLE sessions
id INTEGER primary key;
userId INTEGER NOT NULL;
duration INTEGER NOT NULL;

我需要编写一个查询来选择 userID 和每个 session 超过 1 个用户的平均持续时间。换句话说,我需要对在表中多次出现的所有 userId 的持续时间进行平均。谁能帮我解决这个问题?

最佳答案

您可以简单地使用一个having 子句:

select userid, avg(duration)
from sessions
group by userid
having count(*) > 1;

这将是“可接受的”答案。通常最快的方法是:

select userid, avg(duration)
from sessions s
where exists (select 1 from sessions s2 where s2.userid = s.userid and s2.id <> s.id)
group by userid;

如果许多用户都是一次性的并且您在 (userid, id) 上有一个索引,这会更快。为什么?因为查询在聚合之前快速过滤并且显着减少行数比检查成本(在给定情况下)更能加速聚合。

而且,在进行整数运算的数据库中,您可能需要 avg(duration * 1.0)

但是,面试候选人会通过第一个问题。

关于sql - 使用 SQL 获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48844022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com