繁体   English   中英

mysql JSON_ARRAYAGG 或 GROUP_CONCAT 有限制

[英]mysql JSON_ARRAYAGG or GROUP_CONCAT with limit

在 mysql8.0 中有没有办法在JSON_ARRAYAGGGROUP_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM