证明过程:
表结构:
customers(customer_id, customer_name, region, register_date)
orders(order_id, customer_id, order_date, total_amount, status)
order_items(item_id, order_id, product_id, quantity, unit_price)
products(product_id, category, brand)
正确 SQL:
SELECT
products.category,
SUM(order_items.quantity * order_items.unit_price) AS total_sales,
COUNT(DISTINCT customers.customer_id) AS customer_cnt
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id
WHERE
YEAR(orders.order_date) = 2025
AND customers.region = '华东'
AND orders.status = '已完成'
GROUP BY products.category
HAVING COUNT(DISTINCT customers.customer_id) > 100;
推理说明:正确区分前置过滤 WHERE 和分组后过滤 HAVING;使用 COUNT(DISTINCT) 去重统计客户;完整且正确 4 表关联,SQL 可直接在数据库执行。
准确拆解多层业务条件,区分行过滤与分组过滤,多表关联关系无误,无编造表 / 字段。


