0

次の列を持つmysqlテーブルがあります

order_id customer_id total_mount date_added

ここで、特定の顧客に対してクエリを実行して、その顧客が注文履歴の 6 か月間に 12000 ドル以上の注文をしたかどうかを知りたいと思います。期間は最近ではありません。

これに対する解決策はありますか?

よろしく、ディペン

4

1 に答える 1

1
select sum(total_amount) >= 12000 over_12000
from mytable
where customer_id = nnn
and date_added between 'YYYY-MM-DD' and date_add('YYYY-MM-DD', interval 6 month)

nnn を特定の顧客 ID に置き換え、YYYY-MM-DD を関心のある 6 か月の期間の開始に置き換えます。

アップデート:

これは、顧客の最後の注文までの 6 か月の期間を使用します。

select sum(total_amount) >= 12000 over_1200
from mytable join (select max(date_added) last_date
                   from mytable
                   where customer_id = nnn) last
where customer_id = nnn
and date_added between last_date and date_sub(last_date, interval 6 month)

更新 2:

select m1.date_added end_date, sum(m2.total_amount) >= 12000 
from mytable m1 join mytable m2 on m2.date_added between date_sub(m1.date_added, interval 6 month) and m1.date_added and m1.customer_id = m2.customer_id
where m1.customer_id = nnn
group by end_date
order by end_date
于 2013-02-07T05:41:48.540 に答える