[英]mysql JSON_ARRAYAGG or GROUP_CONCAT with limit
在 mysql8.0 中有没有办法在JSON_ARRAYAGG
或GROUP_CONCAT
内做一个限制? 例如:
WITH season AS (
select 'DAL' as team, 4 as wins, 2000 as season UNION
select 'DAL' as team, 10 as wins, 2001 as season UNION
select 'DAL' as team, 9 as wins, 2002 as season UNION
select 'GB' as team, 2 as wins, 2000 as season UNION
select 'GB' as team, 3 as wins, 2001 as season UNION
select 'GB' as team, 4 as wins, 2002 as season
) SELECT
team,
GROUP_CONCAT(wins order by season desc separator '+') wins_str,
JSON_ARRAYAGG(wins) wins_arr
FROM season
GROUP BY team;
例如,我如何只获得上述两个领域的前 5 wins
? 例如,我希望做一些你可以在 BigQuery STRING_AGG
做的事情,它接受一个LIMIT
。
最简单的方法是窗口函数:
SELET team,
GROUP_CONCAT(wins order by season desc separator '+') wins,
JSON_ARRAYAGG(wins)
from (select s.*,
row_number() over (partition by team order by seasons desc) as seqnum
from seasons s
) s
where seqnum <= 5
group by team
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.