从订单表中查找新买家和退货买家

时间:2012-02-19 15:21:11

标签: php mysql sql database

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

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

  2. 客户表。 CustoerID,CustomerFirstName,CustomerLastName,...

  3. 我需要找到两个值,即:

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

      • 基本上,这些是在特定时间段内的拳头买家
    2. 回头客总数(在特定时间段内*)

      • 基本上,这些是在此之前购买的买家

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

    3. 我的数据库在MySQL中。

      问题:

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

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

      感谢您的帮助。

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

这是常见的情况,但如果您需要更详细的代码程序,请使用google并编写一个好的代码!

答案 2 :(得分:0)

新买家总数 选择c。* 来自客户c,订单o 在哪里c.CustomerID = o.CustomerID AND c.CustomerID不在(SELECT o1.CustomerID from Orders o1)

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

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