我有一张名为 Sales 的表:
id_sale id_ticket total state
------- --------- ----- -----
100 100 30 inactive
101 101 30 active
102 101 60 active
103 102 30 active
104 102 30 active
105 103 10 active
106 103 5 active
我需要的是total
在状态处于活动状态时获取列的总和 sum(total) 并将其乘以 x 百分比(我可以这样做),因此我必须选择所有票的总和(全部票总和)是<= sum(total) * x percentage
并将其复制到另一个表(相同的值)
因此,如果我有票 101 = 90 和票 102 = 60 和票 103 = 15 的总和,并且总和(总)*x 百分比 = 160,查询将只返回来自票 101 和 102。
整个早上阅读我发现了一个代码,它以某种方式完成了我需要的事情,但使用 id_Sales 而不是 id_ticket:
select t1.id_sale, t1.total, SUM(t2.total) as sum
from sales t1
inner join sales t2 on t1.id_sale >= t2.id_sale
where t2.state='active'
group by t1.id_sale, t1.total
having sum(t2.total)<=(
select sum(total)*.65
from sales
where state='active')
order by t1.id_sale
我希望收到的是:
id_sale id_ticket total state
------- --------- ----- -----
101 101 30 active
102 101 60 active
103 102 30 active
104 102 30 active
其中票 101 和票 102 的总和为 <= sum(total)*x
所以 101 和 102 之和 = 150 和 sum(total)*x = 160 (例如)
我怎样才能做我需要的事情,或者我怎样才能编辑这个代码,让它做我正在寻找的东西。