Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL SELECT MIN para todos os tempos, mas só retorna se BETWEEN datas


Se fizermos um mínimo de todas as transações por cliente, verifique se isso está no período correto, obtemos algo na linha de...

Isso simplesmente lhe dará um sinalizador sim/não para saber se a primeira compra do cliente foi dentro do período...
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

(isso está em T-SQL, mas espero dar uma ideia de como isso pode ser alcançado de maneira semelhante no mySQL)

Simão