gpt4 book ai didi

mysql - count(distinct(person_id)) 不适用于 MySQL 数据库中的窗口函数

转载 作者:行者123 更新时间:2023-11-29 10:05:55 25 4
gpt4 key购买 nike

所以我发现mysql不支持使用像count(distinct(person_id))这样的聚合函数和窗口函数。例如,下面的查询将不起作用。

select count(distinct(person_id)) over ([OrderBy clause])
from <table>;

这个问题的替代方法是什么,它的工作速度与窗口函数一样快?

架构:

create table table1(
check_date date,
person_id varchar(10)
);

我尝试的查询:

select person_id,count(distinct(person_id))
over (order by check_date range between interval '20' day preceding and current row)
from table1;

需要统计 20 天内登录系统的所有不同人员的数量。

最佳答案

这回答了问题的原始版本。

在 MySQL 8+ 中,您可以使用两个窗口函数来模拟:

select sum(seqnum = 1) over (order by ?) as num_distinct
from (select t.*,
row_number() over (partition by person_id order by ?) as seqnum
from <table> t
) t;

关于mysql - count(distinct(person_id)) 不适用于 MySQL 数据库中的窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51916967/

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