2009-08-31 8 views
0

Je voudrais calculer quelques statistiques simples (pourcentages) à partir d'une table dans mysql. Le tableau en question a le pseudo-schéma suivant:Calcul de statistiques simples sur une seule table mysql

TABLE: coupons 
couponId (int) 
couponType (int) 
customerId (int) 
sentOn (datetime) 
visitedOn (datetime) 
purchasedOn (datetime) 

Ce tableau suit des coupons uniques envoyés aux clients, quand ils ont été envoyés, si le client a visité le site en raison de ce coupon, et quand ils ont acheté le produit de ce coupon. Dans de nombreux cas, ces colonnes datetime sont null, ce qui implique que le client n'a pas visité ou acheté.

Je voudrais calculer le% de visite par couponType et acheter% par couponType. J'aimerais aussi pouvoir les calculer pour customerId afin de voir quels clients ont la plus forte fréquentation% et achètent%. Depuis visiter% = # visites/# envoie, je peux facilement calculer le numérateur et le dénominateur en utilisant sql, mais j'espérais calculer les statistiques dans une seule requête pour couponType et une autre seule requête pour customerId. Merci!

Répondre

0

Je suggère quelque chose comme ceci:

SELECT SUM(IF(visitedOn IS NULL, 0, 1))/COUNT(1) AS percent_visited, 
    SUM(IF(purchasedOn IS NULL, 0, 1))/COUNT(1) AS percent_purchased 
FROM coupons 
GROUP BY couponType 

Je suppose ici que sentOn est jamais NULL. Si cela aussi peut parfois être NULL, il suffit de remplacer le COUNT(1) avec SUM(IF(sentOn IS NULL, 0, 1)) aussi.

Questions connexes