0

説明: 特定の月の顧客の購買習慣のパターンを調べたいと思います。6 か月前から 2 か月にわたる 3 か月間の顧客への書籍販売について懸念しています。

この問題について助けが必要です- 問題: 議論中の 3 か月のうちのちょうど 1 か月に購入したすべての顧客の顧客 ID と名前を表示します。たとえば、顧客が 2 か月目に購入し、1 か月目または 3 か月目には購入しない場合があります。

同様の問題への回答: 議論中のどの月にも購入がないすべての顧客の顧客 ID と名前を表示します。

set @rundate = current_date;
set @Mnth_1 = DATE_SUB(@rundate,  INTERVAL 6 MONTH);
set @Mnth_2 = DATE_SUB(@rundate,  INTERVAL 5 MONTH);
set @Mnth_3 = DATE_SUB(@rundate,  INTERVAL 4 MONTH);
Select Distinct c_id, c_name
From a_bkorders.bkv_CustOrders
Where order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_1, '%M %Y'))
and order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_2, '%M %Y'))
and order_id Not IN (
    Select order_id
    From a_bkorders.bkv_CustOrders
    Where Date_format(order_date, '%M %Y') = Date_format(@Mnth_3, '%M %Y'));
4

2 に答える 2

0

したがって、期間が必要な場合は、BETWEEN建設を使用できます。AND NOT EXISTSあとは使ったほうがいいと思いますNOT IN


Select Distinct c_id, c_name
From a_bkorders.bkv_CustOrders
Where order_id NOT IN (
 Select order_id
 From a_bkorders.bkv_CustOrders
 Where order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) AND DATE_SUB(CURDATE(), INTERVAL 4 MONTH)
)

于 2013-10-28T12:41:08.187 に答える