gpt4 book ai didi

mysql - 分组内循环和限制

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

我不知道该用什么标题来回答这个问题

我在表格中得到了以下列

id, slug, date, market

每一行都是日期、货币名称和市值。

我按日期分组

SELECT slug, date, market
from coin
order by date asc, market desc

slug date market
bitcoin 2013-04-28 1500520000
litecoin 2013-04-28 73773400
peercoin 2013-04-28 7255800
namecoin 2013-04-28 5969080
terracoin 2013-04-28 1510150
novacoin 2013-04-28 1155160
bitcoin 2013-04-29 1491160000 -- new date
litecoin 2013-04-29 74952700
peercoin 2013-04-29 7262850
namecoin 2013-04-29 5977460
terracoin 2013-04-29 1508860
novacoin 2013-04-29 1162460
bitcoin 2013-04-30 1597780000 -- new date
litecoin 2013-04-30 75726800
peercoin 2013-04-30 7641700
namecoin 2013-04-30 7185910
terracoin 2013-04-30 1650870
novacoin 2013-04-30 1249450
bitcoin 2013-05-01 1542820000 -- new date
litecoin 2013-05-01 73901200

我想将每个日期的市场相加,但我只想包含每个日期的市场前 3 行。最终我希望数据看起来像这样

date        total market     
29/04/2013 1573375550 -- (1500520000 + 73773400 + 7255800)
30/04/2013 1681148500
01/05/2013 1616721200

感谢任何帮助。谢谢

最佳答案

我认为变量是枚举过滤行的最简单方法:

select date, sum(market)
from (select c.*,
(@rn := if(@d = date, @rn + 1,
if(@d := date, 1, 1)
)
) as rn
from coin c cross join
(select @d := '', @rn := 0) params
order by date, market desc
) c
where rn <= 3
group by date;

评论:

  • 在 MySQL 8.0+ 中,您可以使用 row_number() 而不是变量。
  • 在最新版本的 MySQL 5.7 中,您可能需要在附加子查询中按date, market desc 进行排序。

关于mysql - 分组内循环和限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48597669/

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