私は2つのテーブルを持っています:
orders
customers
「VIPの顧客」を取得する必要があります。これは、登録してから少なくとも月に1回注文した顧客を意味します(に列があり[subscription_date]
ますcustomers
)
私はそれを理解することはできません:(何かアイデアはありますか?
私は2つのテーブルを持っています:
orders
customers
「VIPの顧客」を取得する必要があります。これは、登録してから少なくとも月に1回注文した顧客を意味します(に列があり[subscription_date]
ますcustomers
)
私はそれを理解することはできません:(何かアイデアはありますか?
このクエリは、注文された各顧客の月数をカウントし、顧客がサブスクリプションを取得した月数と比較します。
両方で等しい価値を持つ顧客はあなたのVIP顧客です。
SELECT T1.CUSTOMERID AS VIP_CUSTOMERS
FROM (SELECT Count(*) AS NUM_MONTHS,
CUSTOMERID
FROM (SELECT DISTINCT Month(ORDERDATE),
Year(ORDERDATE),
CUSTOMERID
FROM ORDERS
GROUP BY CUSTOMERID)T
GROUP BY CUSTOMERID)T1
INNER JOIN (SELECT CUSTOMERID,
Datediff(MONTHS, SUBSCRIPTION_DATE, Getdate()) AS
NUM_MONTHS
FROM CUSTOMERS)T2
ON T1.CUSTOMERID = T2.CUSTOMERID
AND T1.NUM_MONTHS = T2.NUM_MONTHS
SQL Fiddleでサンプルデータを設定した場合は、データに応じてクエリを書き直してみます。