SQL - 如何选择随机行,直到该行的总值为某个数字?
Posted
技术标签:
【中文标题】SQL - 如何选择随机行,直到该行的总值为某个数字?【英文标题】:SQL - How to select random rows until the total value of the row is a certain number? 【发布时间】:2020-02-20 15:13:50 【问题描述】:我目前有一个表,其中有一列将时间保存为整数值。如何以随机顺序选择表中的所有行,直到时间的总值 = 某个数字,例如 10。
【问题讨论】:
更新了标签以包含 mysql。对此感到抱歉 【参考方案1】:这样的东西适用于 SQL Server:
select id, timeValue from (
select id,
timeValue,
SUM(timeValue) OVER (ORDER BY CHECKSUM(NewId())) as total
from myTable) as subq
where total < 10
【讨论】:
【参考方案2】:在 MySQL 中,您将对满足或超过 10 的第一行使用以下内容:
select id, timeValue from (
from (select t.*
sum(timeValue) over (order by rand()) as running_sum
from t
) t
where (running_sum - timeValue) < 10;
如果您希望行数不超过但不超过 10,那么:
where running_sum <= 10
【讨论】:
以上是关于SQL - 如何选择随机行,直到该行的总值为某个数字?的主要内容,如果未能解决你的问题,请参考以下文章