我可以在GROUP BY之前执行COUNT()吗

Cod*_*dyK 2 mysql sql count mysql-workbench

我正在为学校进行mySQL分配,但遇到了一个问题。我还是mySQL新手。COUNT(o.customer_id)无法按照我想要的方式工作。我希望它计算订单数,但它计算所有项目。即客户1有2个订单,但由于一个订单有两个项目而返回3。我有三个表,一个与客户,另一个与订单,而不是另一个与每个订单上的每个项目。我在下面提出了我的查询。任何帮助都会很棒。

SELECT email_address, COUNT(o.order_id) AS num_of_orders,
       SUM(((item_price - discount_amount) * quantity)) AS total
FROM customers c JOIN orders o
      ON c.customer_id = o.customer_id
     JOIN order_items ot
      ON o.order_id = ot.order_id
GROUP BY o.customer_id
HAVING num_of_orders > 1
ORDER BY total DESC;
Run Code Online (Sandbox Code Playgroud)

dan*_*era 5

使用Distinct保留字就这么简单:

SELECT email_address, COUNT(distinct o.order_id) AS num_of_orders
Run Code Online (Sandbox Code Playgroud)