我有一个现有的电子商务数据库,其中包含相当标准的销售表。相关表格是:
订单表。 字段如下: OrderID,CustomerID,OrderDate,......
客户表。 CustoerID,CustomerFirstName,CustomerLastName,...
我需要找到两个值,即:
新买家总数(在特定时间段内*)
回头客总数(在特定时间段内*)
基本上,这些是在此之前购买的买家
时间段,我们将提供输入,例如1周内
我的数据库在MySQL中。
问题:
获得两个总数的最简单,最有效的方法是什么? 1.新买家总数 2.回头客总数
我需要用PHP编写程序吗?或者我可以简单地使用SQL语句来实现这个目标吗?
感谢您的帮助。
答案 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)
您可以为两个查询添加时间范围