SQL根据订单数据计算 新老客购买货品人数和金额
时间: 2024-01-24 17:17:27 浏览: 30
假设订单数据存储在一个名为 `orders` 的表中,包含以下字段:
- `order_id`: 订单编号
- `customer_id`: 客户编号
- `order_time`: 下单时间
- `product_id`: 货品编号
- `product_name`: 货品名称
- `product_price`: 货品单价
- `quantity`: 购买数量
可以使用以下 SQL 查询语句计算新老客购买货品人数和金额:
```
-- 新客购买人数和金额
SELECT COUNT(DISTINCT o.customer_id) AS new_customer_count,
SUM(o.product_price * o.quantity) AS new_customer_amount
FROM orders o
WHERE NOT EXISTS (
-- 子查询,筛选出之前有过订单的客户
SELECT 1
FROM orders o2
WHERE o2.customer_id = o.customer_id
AND o2.order_time < o.order_time
)
-- 老客购买人数和金额
SELECT COUNT(DISTINCT o.customer_id) AS old_customer_count,
SUM(o.product_price * o.quantity) AS old_customer_amount
FROM orders o
WHERE EXISTS (
-- 子查询,筛选出之前有过订单的客户
SELECT 1
FROM orders o2
WHERE o2.customer_id = o.customer_id
AND o2.order_time < o.order_time
)
```
其中,第一个查询统计了新客购买人数和金额,使用了一个 `NOT EXISTS` 子查询来筛选出之前没有下过单的客户;第二个查询统计了老客购买人数和金额,使用了一个 `EXISTS` 子查询来筛选出之前下过单的客户。