Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL SELECT MIN pour tous les temps, mais ne retourne que si BETWEEN dates

Si nous effectuons un minimum de toutes les transactions par client, puis vérifions si c'est dans la bonne période, nous obtenons quelque chose comme...

Cela vous donnera simplement un indicateur oui/non indiquant si le premier achat du client a eu lieu dans la période...

SELECT CASE COUNT(*) WHEN 0 THEN 'Yes' ELSE 'No' END As [WasFirstTransInThisPeriod?]
FROM (  
        SELECT bb_member.member_id As [member_id], MIN(bb_transactions.trans_tran_date) AS temp_first_time 
        FROM bb_business      
        RIGHT JOIN bb_transactions ON bb_transactions.trans_store_id = bb_business.store_id 
        LEFT JOIN bb_member ON bb_member.member_id = bb_transactions.trans_member_id 
        WHERE bb_business.id = '5651' 
        GROUP BY bb_member.member_id
    ) T
WHERE T.temp_first_time BETWEEN '2010-08-01' AND '2010-09-13'
ORDER BY T.member_id DESC

(c'est dans T-SQL, mais devrait donner une idée de la façon dont cela peut être réalisé de manière similaire dans mySQL)

Simon