SQL根据订单数据计算 D11期间新老客购买货品人数和金额 老客为10月31日前一年有购买行为的消费者
时间: 2024-01-24 08:17:29 浏览: 106
SQLServer查询某个时间段购买过商品的所有用户
假设订单数据存储在一个名为"orders"的表中,包含以下列:
- order_id:订单编号
- customer_id:客户编号
- order_date:订单日期
- product_id:产品编号
- amount:订单金额
下面是计算D11期间新老客购买货品人数和金额的SQL查询语句:
```
SELECT
SUM(CASE WHEN order_date BETWEEN '2021-11-01' AND '2021-11-15' THEN 1 ELSE 0 END) AS new_customer_count,
SUM(CASE WHEN order_date BETWEEN '2021-11-01' AND '2021-11-15' THEN amount ELSE 0 END) AS new_customer_amount,
SUM(CASE WHEN order_date BETWEEN '2021-11-01' AND '2021-11-15' AND customer_id IN (
SELECT customer_id FROM orders WHERE order_date < '2020-11-01'
) THEN 1 ELSE 0 END) AS old_customer_count,
SUM(CASE WHEN order_date BETWEEN '2021-11-01' AND '2021-11-15' AND customer_id IN (
SELECT customer_id FROM orders WHERE order_date < '2020-11-01'
) THEN amount ELSE 0 END) AS old_customer_amount
FROM orders
WHERE order_date BETWEEN '2021-11-01' AND '2021-11-15'
```
解释一下这个查询语句:
- 第一个CASE语句用于计算D11期间新客户购买货品的人数,如果订单日期在2021年11月1日至15日之间则算作新客户,否则不计入。如果是新客户,则将计数器加1,否则加0。
- 第二个CASE语句用于计算D11期间新客户购买货品的金额,如果订单日期在2021年11月1日至15日之间则算作新客户,否则不计入。如果是新客户,则将订单金额加入总金额,否则加0。
- 第三个CASE语句用于计算D11期间老客户购买货品的人数,如果订单日期在2021年11月1日至15日之间并且客户编号在去年10月31日前有过购买行为,则算作老客户。如果是老客户,则将计数器加1,否则加0。
- 第四个CASE语句用于计算D11期间老客户购买货品的金额,如果订单日期在2021年11月1日至15日之间并且客户编号在去年10月31日前有过购买行为,则算作老客户。如果是老客户,则将订单金额加入总金额,否则加0。
- WHERE子句用于筛选2021年11月1日至15日之间的订单。
注意:以上查询语句只是一个示例,具体实现可能需要根据实际情况进行调整。
阅读全文