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であり、sum(total)*xパーセンテージ=160の場合、クエリはからのすべての情報のみを返します。チケット101と102。
午前中読んで、私はどういうわけか私が必要とするもののような何かをするが、id_ticketではなくid_Salesを使用するコードを見つけました:
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(たとえば)
必要なことを実行するにはどうすればよいですか、またはこのコードを編集して、探していることを実行するにはどうすればよいですか。