需要MySQL查询帮助

时间:2015-11-30 20:25:55

标签: mysql

这可能是漫长的一天,也可能是退休时间:-)

我在注册时有一个购买(id = 2)或分配(id = 1)的交易表。在客户可以进行交易之前,首先进行分配交易。

我希望计算转化率,即注册并继续购买的人数。

这是我的表格的样子

|  id  | transaction_type_id   |   customer_id   |   created_at   |
|  234 | 1                     |   22            |   2015-11-26
|  235 | 2                     |   22            |   2015-11-26
|  236 | 1                     |   23            |   2015-11-27
|  237 | 1                     |   24            |   2015-11-27
|  238 | 1                     |   25            |   2015-11-27
|  239 | 1                     |   26            |   2015-11-28
|  240 | 2                     |   26            |   2015-11-28
|  241 | 1                     |   27            |   2015-11-28
|  242 | 1                     |   28            |   2015-11-28

这是我到目前为止的查询

 SELECT COUNT(t.id) AS total, DATE(t.transaction_date) as trans_date, (SELECT COUNT(t1.id) FROM transactions t1 WHERE t1.transaction_type_id = 1 AND t1.member_id = t.member_id) AS converted FROM transactions t  WHERE t.transaction_type_id = 21 AND DATE(t.transaction_date) >= DATE(CURRENT_TIMESTAMP())-7 GROUP BY trans_date ORDER BY trans_date ASC

将不胜感激

1 个答案:

答案 0 :(得分:1)

由于您希望用户同时具有两种转换类型,并且每种类型可能有多个:

SELECT t1.customer_id, count(t2.transaction_type_id)
FROM yourtable t1
LEFT JOIN yourtable t2 ON
    (t1.customer_id = t2.customer_id AND t2.transaction_type_id = 2)
WHERE t1.transaction_type_id = 1

基本上:选择所有transtype = 1记录,然后自联接以获得也具有transtype = 2记录的所有客户。那将给你所有"类型1"客户,无论多少"类型2"记录也存在于他们身上。从中您可以轻松计算出总客户数量以及实际购买了多少客户。