如何在运行总计超过设定限制时获取列表



我有一个mysql表,其中包含IDUniqNameCategoryEntDateQty

当"类别"中的Qty总和超过设定的限制时,我必须找到每个UniqNameEntDate

我是SQL的初学者,被这个报告要求难住了。

计算运行总和可能很复杂。 一些数据库提供直接支持。 以下是MySQL中使用相关子查询的方法:

select t.*
from (select t.*,
             (select sum(t2.qty)
              from t t2
              where t2.UniqName = t.UniqName and
                    t2.EntDate <= t.EntDate
             ) as cumsum
      from t
     ) t
where cumsum >= YOURLIMIT and cumsum - qty < YOURLIMIT;

这甚至可以具有合理的性能,如果您有索引 t(UniqName, EntDate, qty) .

此查询假定每个UniqName不重复EntDate,并且qty不为 NULL。 如果qty可以为零或负数,则可能会显示多行。

相关内容

  • 没有找到相关文章

最新更新