Je suis fou confus à ce sujet pour une raison quelconque.
Fondamentalement, je cherche une requête qui trouvera le nombre de nouveaux clients par mois, depuis 2010. p>
J'ai l'adresse e-mail du client (email), toutes les commandes passées (orderid), et quelle date a été placée sur (orderdate). La table est Tblorder. P>
Je sais qu'un "nouveau client" est: (a) une personne qui n'a jamais commandé avant em> la date / mois et b) qui a au moins une Commandez après em> la date / mois p> Je voudrais que la sortie soit quelque chose comme celle-ci à la fin, avec une méthode plus simple étant meilleure: p> SELECT <customer info>
FROM <customer table>
WHERE (SELECT COUNT(<order info>)
FROM <order table>
WHERE <customer info> = <current customer>
AND <date> < <target date>) = 0
AND (SELECT COUNT(<order info>
FROM <order table>
WHERE <customer info> = <current customer>
AND <date> > <target date>) > 0
5 Réponses :
Commencez par définir un nouveau client
select distinct FirstTimer.customer_id from (select customer_id,min(order_date) as FirstOrderDate from tblOrder group by customer_id having Month(min(order_date))=month(TargetDate) and year(min(order_date))=year(targetDate) ) FirstTimer join tblOrder ot on ot.customer_id=First_timer.customer_id where ot.order_date > target_date
Le nom de la table est là-haut! "Adresse électronique du client (email), toutes les commandes passées (orderid) et quelle date il a été placé sur (orderdate). La table est Tblorder" mais merci! Je vais certainement regarder cela plus près.
Essayez: sqlfiddle ici . p> p>
D'après ce que je peux dire, c'est la réponse la plus précise basée sur les résultats que je reçois. Je ne sais pas comment le confirmer avec certitude, mais pour le moment, merci beaucoup!
@spazzie: Eh bien, vous pourriez prendre ma parole pour elle ...;) Plus sérieusement, s'il y a moins de millions de lignes impliquées, vous pouvez jeter votre table à Excel, puis vérifier vos résultats là-bas.
@spazzie: Je suis heureux d'aider. :)
Cela vous permettra de compter votre nouveau client par année et mois: Il ne les renvoie pas dans le même format que vous avez demandé, mais cela peut être fait dans Excel ou en SQL avec un peu de travail supplémentaire. p> p>
Légère édition de la réponse de @mark Bannister. L'intention indiquée par OP est de capturer le nombre de nouveaux clients au cours de laquelle ils ont placé leur premier ordre. La définition de «nouveau client» de OP est confuse en ce qu'il spécifie:
Un "nouveau client" est: (a) quelqu'un qui n'a jamais commandé avant le Date / mois et b) qui a au moins une commande
après forte> la date / mois (accentuation ajoutée) p> blockQuote> Peut-être que c'est vraiment ce que l'OP veut, mais cela serait appelé de manière précise avec précision un "nouveau client qui devient un acheteur répété dans un mois suivant" car il élimine: p>
- clients qui ne placent qu'un ordre li>
- clients qui placent toutes leurs commandes dans la même date / mois li> ol>
SELECT EXTRACT(MONTH FROM orderdate) AS month, EXTRACT(YEAR FROM orderdate) AS year, COUNT(*) FROM ( SELECT MIN(orderdate) AS orderdate, name FROM tblOrder GROUP BY name ) GROUP BY EXTRACT(MONTH FROM orderdate), EXTRACT(YEAR FROM orderdate)