我不知道如何为这个问题写标题,但我需要的是一个查询,它返回N
具有特定值的记录是什么。
我拥有的表超过 520 万条记录
记录类似于:
- 会话(字符串,主索引)
- customer_id(int,索引)
- 点击次数(整数,索引)
- order_number(整数,索引)
- date_entry(日期时间,索引)
- 许多其他领域
我需要知道的是同一客户在下订单之前登录网站的次数(不同的会话)(order_number 为 0,除非在该会话期间下订单)
样本数据可以是(简化数据)
会议 | c_id | 点击 | ord_num | 条目 | 美国广播公司 | 123 | 2 | 0 | 2012-08-01 00:00:00 | cde | 第456章 2 | 0 | 2012-08-01 00:00:01 | 电子烟| 第457章 2 | 0 | 2012-08-01 00:00:02 | 嗨| 123 | 5 | 0 | 2012-08-01 00:00:03 | 柯德 | 986 | 10 | 0 | 2012-08-01 00:00:04 | wdg | 123 | 2 | 9876 | 2012-08-01 00:00:05 | qwe | 123 | 2 | 0 | 2012-08-01 00:00:06 | wvr | 986 | 12 | 8656 | 2012-08-01 00:00:07 |
我想要的是一个显示类似于以下内容的查询:
- 条目 - 日期条目
- tot_sess - 会话总数
- tot_cust - 客户总数
- 1sess - customer1 只有一个会话
- 2sess - 有 2 个会话的客户
- 3sess - 有 3 个会话的客户
- 4sess - 有 4 个会话的客户
- more4sess - 超过 4 个会话的客户
- order1sess - 第一次订购的客户
- order2sess - 在第二个会话中订购的客户
- order3sess - 在第三个会话上订购的客户
- order4sess - 在第四届会议上订购的客户
- orderMore4Sess - 在第四次会议之后订购的客户
条目 |tot_sess|tot_cust| 1sess | 2sess | 3sess | 4sess | 更多4sess | order1sess | order2sess | order3sess | order4sess | orderMore4Sess | 2012-08-01 | 8 | 4 | 2 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
我已经能够通过以下查询获取有关会话的信息:
SELECT
t.`date_entry`,
COUNT(sess) `cust`,
SUM(sess) `session`,
COUNT(IF(sess>1,sess,NULL)) `more than once`,
COUNT(IF(sess=1,sess,NULL)) `one`,
COUNT(IF(sess=2,sess,NULL)) `two`,
COUNT(IF(sess=3,sess,NULL)) `three`,
COUNT(IF(sess=4,sess,NULL)) `four`,
COUNT(IF(sess>4,sess,NULL)) `more`,
ROUND(COUNT(IF(sess>1,sess,NULL))/COUNT(sess),2) `perc > 1`,
ROUND(COUNT(IF(sess>2,sess,NULL))/COUNT(sess),2) `perc > 2`,
ROUND(COUNT(IF(sess>3,sess,NULL))/COUNT(sess),2) `perc > 3`,
ROUND(COUNT(IF(sess>4,sess,NULL))/COUNT(sess),2) `perc > 4`
FROM
(
SELECT
`customer_id`,
COUNT(`session`) `sess`,
DATE(`date_entry`) `date_entry`
FROM `customer_activity_log`
WHERE
`clicks` > 1
AND `customer_id` > 0
AND `date_entry` > '2012-08-01'
AND subsite_id <=1
GROUP BY `date_entry`, `customer_id`
) t
GROUP BY date_entry
一旦我有了这个,我还需要以不同的方式查看数据,例如,如果客户 123 在 2012 年 1 月 1 日第一次出现,然后在 2012 年 8 月回来 15 次并下订单01 然后又回来了 5 次,并在 2012-10-12 再次下date_entry
订单
我希望这是有道理的