我想从mysql中的表中计算一些简单的统计信息(百分比)。有问题的表具有以下伪模式:
TABLE: coupons
couponId (int)
couponType (int)
customerId (int)
sentOn (datetime)
visitedOn (datetime)
purchasedOn (datetime)
此表跟踪发送给客户的唯一优惠券,发送时间,客户是否因该优惠券访问了网站,以及何时从该优惠券购买产品。在许多情况下,这些日期时间列为空,表示客户未访问或购买。
我想通过couponType计算访问次数%,并通过couponType购买%。我还希望能够为customerId计算这些,以查看哪些客户的访问率最高%和购买%。
由于访问%=#visits / #send,我可以使用sql轻松计算分子和分母,但我希望在couponType的单个查询和customerId的另一个查询中计算统计数据。谢谢!
答案 0 :(得分:0)
我建议这样的事情:
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
我在此假设sentOn
永远不会NULL
。如果有时也可能是NULL
,那么只需将COUNT(1)
替换为SUM(IF(sentOn IS NULL, 0, 1))
。