Mysql 如何找到每个不同客户的订单数量?

Mysql 如何找到每个不同客户的订单数量?,mysql,sql,Mysql,Sql,我有两张桌子: CREATE TABLE customers ( customer_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255) NOT NULL, last_name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, address VARCHAR(2

我有两张桌子:

 CREATE TABLE customers (
    customer_id     INT     NOT NULL AUTO_INCREMENT PRIMARY KEY,
    first_name  VARCHAR(255)    NOT NULL,
    last_name   VARCHAR(255)    NOT NULL,
    email       VARCHAR(255)    NOT NULL,
    address     VARCHAR(255)    DEFAULT NULL,
    city        VARCHAR(255)    DEFAULT NULL,
    state       VARCHAR(2)  DEFAULT NULL,
    zip_code    VARCHAR(5)  DEFAULT NULL,
);

CREATE TABLE orders (
    order_id        INT     NOT NULL AUTO_INCREMENT PRIMARY KEY,
    customer_id         INT     NOT NULL,
    order_placed_date   DATE    NOT NULL,
    FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
); 
2018年底,工厂所有者希望编写一个SQL查询,通过客户电子邮件地址查找2018年的订单数量。她希望按2018年的订单数量降序排序,这样她就可以根据订单量亲自向顶级客户发送感谢电子邮件。 我必须写一个查询,帮助业主找到2018年所有订单的数量,按客户电子邮件地址,按降序排序

我做了一个内部连接:

SELECT email FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
但我必须统计每个不同客户的订单,因此我将有另一列2018年的订单总数

我怎样才能制定年度的WHERE条款?我有日期格式的下单日期。 如何计算每个客户id的订单数量

select customers.email, count(*)
from orders
inner join customers using (customer_id)
where orders.placed_order_date between '2018-01-01' and '2018-12-31'
group by customers.email
您可能需要订单的索引。下单日期。

以下是查询

SELECT customers.email, count(order_id) as totalCount FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id where year(order_placed_date)=2018 group by customers.email order by totalCount  desc
看见