从订单表中查找新买家和回头客

Posted

技术标签:

【中文标题】从订单表中查找新买家和回头客【英文标题】:Find New Buyers, and Returning Buyers from the Orders tables 【发布时间】:2012-03-10 03:53:26 【问题描述】:

我有一个现有的电子商务数据库,其中包含相当标准的销售表。相关表格是:

    订单表。 字段如下: OrderID、CustomerID、OrderDate、...

    客户表。 客户 ID、客户名字、客户姓氏、...

我需要找到两个值,即:

    新买家总数(特定时间段内*)

    基本上都是一定时期内的第一次购买者

    回头客总数(特定时间段内*)

    基本上,这些是在该时间段之前购买过的买家

    时间段,我们将提供作为输入,例如 1 周内

我的数据库在 mysql 中。

问题:

获得这两个总数的最简单和最有效的方法是什么? 1. 新买家总数 2. 回头客总数

我需要用 php 编写程序吗?或者我可以简单地使用 SQL 语句来实现?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

这可以完全在 SQL 中完成:

首次购买者人数:

SELECT
  COUNT(DISTINCT CustomerID) 
FROM Orders 
WHERE OrderDate BETWEEN <startdate> AND <enddate>
/* Buyers with only one order record */
AND CustomerID IN (SELECT CustomerID FROM Orders GROUP BY CustomerID HAVING COUNT(*)=1)

重复购买者数量:

SELECT
  COUNT(DISTINCT CustomerID) 
FROM Orders 
WHERE OrderDate BETWEEN <startdate> AND <enddate>
/* Buyers with more than one order record */
AND CustomerID IN (SELECT CustomerID FROM Orders GROUP BY CustomerID HAVING COUNT(*)>1)

【讨论】:

我认为这会奏效。非常感谢迈克尔...将尝试此代码!【参考方案2】:

两者都有!您必须编写从数据库返回数据的 SQL 语句,并从 PHP 脚本中调用该语句来处理它。 SQL 语句使您能够检索数据,PHP 代码使您能够管理并最终在您的网页上预设数据(将其转换为 html 语言)。

这是常见的场景,但如果您需要更详细的代码过程,请使用google 并进行漂亮的编码!

【讨论】:

【参考方案3】:

新买家总数 选择 c.* 来自客户 c,订单 o 其中 c.CustomerID = o.CustomerID 并且 c.CustomerID 不在(从订单 o1 中选择 o1.CustomerID)

回头客总数 新买家总数 选择 c.* 来自客户 c,订单 o 其中 c.CustomerID = o.CustomerID AND c.CustomerID in(SELECT o1.CustomerID from Orders o1)

您可以为两个查询添加时间范围

【讨论】:

以上是关于从订单表中查找新买家和回头客的主要内容,如果未能解决你的问题,请参考以下文章

从客户订单表中查找最近的重复订单 - 慢速交叉应用

每周从 user_id 和 date 查找新的活跃用户

使用查找表中的 withColumn 动态添加新列

查找Salesperson第二高的销售SQL

SQL 从存储事务的表中查找每日最大单位

从哪里获取买家信息,例如买家电子邮件、姓名等待处理订单或在亚马逊 mws 中取消订单