错误代码:1235。此版本的 MariaDB 尚不支持 'COUNT(DISTINCT) aggregate as window function'
Error Code: 1235. This version of MariaDB doesn't yet support 'COUNT(DISTINCT) aggregate as window function'
我在 MariaDB 上有以下 table:
date name
2018-01-02 John
2018-01-03 Mary
2018-01-05 Peter
2018-01-06 John
2018-01-07 Ann
2018-01-08 Ann
2018-01-09 John
2018-01-10 Peter
我想每天计算 cumulated_name_count。即我期待我的结果:
date cumulated_name_count
2018-01-02 1
2018-01-03 2
2018-01-04 2
2018-01-05 3
2018-01-06 3
2018-01-07 4
2018-01-08 4
2018-01-09 4
2018-01-10 4
为此,我将以下代码与 window 函数一起使用:
select date,
count(distinct name) over (order by time rows unbounded preceding)
as cumulated_name_count from myDB.myTable
但是,我收到以下错误:
Error Code: 1235. This version of MariaDB doesn't yet support 'COUNT(DISTINCT) aggregate as window function'
有没有办法避免此类错误并通过 window 函数获取累计计数?谢谢!
您可以使用嵌套的 window 函数执行此操作:
select date,
sum( seqnum = 1 ) over (order by time rows unbounded preceding)
as cumulated_name_count
from (select t.*,
row_number() over (partition by name order by time)
as seqnum
from myDB.myTable t
) t2;
子查询按时间枚举每个name
值。然后外部查询计算每条记录中“1”的个数。
我在 MariaDB 上有以下 table:
date name
2018-01-02 John
2018-01-03 Mary
2018-01-05 Peter
2018-01-06 John
2018-01-07 Ann
2018-01-08 Ann
2018-01-09 John
2018-01-10 Peter
我想每天计算 cumulated_name_count。即我期待我的结果:
date cumulated_name_count
2018-01-02 1
2018-01-03 2
2018-01-04 2
2018-01-05 3
2018-01-06 3
2018-01-07 4
2018-01-08 4
2018-01-09 4
2018-01-10 4
为此,我将以下代码与 window 函数一起使用:
select date,
count(distinct name) over (order by time rows unbounded preceding)
as cumulated_name_count from myDB.myTable
但是,我收到以下错误:
Error Code: 1235. This version of MariaDB doesn't yet support 'COUNT(DISTINCT) aggregate as window function'
有没有办法避免此类错误并通过 window 函数获取累计计数?谢谢!
您可以使用嵌套的 window 函数执行此操作:
select date,
sum( seqnum = 1 ) over (order by time rows unbounded preceding)
as cumulated_name_count
from (select t.*,
row_number() over (partition by name order by time)
as seqnum
from myDB.myTable t
) t2;
子查询按时间枚举每个name
值。然后外部查询计算每条记录中“1”的个数。