次のようなテーブルがあります。
id | Customer | date ----------------------------------------- 1 | Customer2 | 2013-08-01 00:00:00 ----------------------------------------- 2 | Customer1 | 2013-07-15 00:00:00 ----------------------------------------- 3 | Customer1 | 2013-07-01 00:00:00 ----------------------------------------- . | ... | ... ----------------------------------------- n | CustomerN | 2012-03-01 00:00:00
別のテーブル/ビューで行ったとしても、毎月の「獲得した」顧客、毎月の「失った」顧客、および毎月の純利益を計算したいと考えています。
どうやってやるの?
編集
わかりました、私がこれまでに行ったことを示しましょう。
任意の月の獲得した顧客を選択するために、次のものが存在しない予約テーブルから顧客を選択しようとしました:
select Customer
from Bookings
where not exists
(select Customer
from Bookings
where
(Bookings.date BETWEEN
DATE_FORMAT(DATE_SUB(Bookings.date, INTERVAL 1 MONTH), '%Y-%m-01 00:00:00')
AND DATE_FORMAT(Bookings.date, '%Y-%m-01 00:00:00'
)
) AND Bookings.date >= STR_TO_DATE('2010-11-01 00:00:00', '%Y-%m-%d 00:00:00'))
これは、「選択された」月には存在したが、前の月には存在しなかった顧客を取得すると思われます。「2010-11-01」は予約開始日+1ヶ月。
任意の月の失われた顧客を選択するために、次のものが存在しない予約テーブルから顧客を選択しようとしました:
select Customer
from Booking
where not exists
(select Customer
from Bookings
where
(Bookings.date BETWEEN
DATE_FORMAT(Bookings.date, '%Y-%m-01 00:00:00')
AND Bookings.date
)
AND Bookings.date >= STR_TO_DATE('2010-11-01 00:00:00', '%Y-%m-%d 00:00:00'
)
)
これはおそらく、前の月に存在したが「選択された」月には存在しなかった顧客を取得します。
「損失」SQL クエリの場合、空の結果が得られました。「ゲイン」については、何千行も取得しましたが、それが正確かどうかはわかりません。