MySQL 按查询分组(非常接近)



我有3个表(简化(:

订单
  • (订单编号、日期(
  • 订单行
  • (行 ID、订单 ID、用户 ID(
  • 用户
  • (用户 ID、名称(

我想要每个用户的订单数量列表,按用户名按年份和月份订单分组。订单行具有用户 ID 的原因是另一个用户可以更改订单行。下面给了我一个订单行数的列表,但它只需要计算订单:

SELECT 
users.name, 
COUNT(orders.orderid) AS number, 
MONTH(orders.date) AS month, 
YEAR(orders.date) AS year
FROM orders
INNER JOIN orderlines ON orders.orderid = orderlines.orderid
INNER JOIN users ON orderlines.userid = users.userid
GROUP BY orderlines.userid, YEAR(order.date), MONTH(order.date)
ORDER BY users.name, orders.date

我觉得我非常接近...

电流输出为:

name | number | month | year 
---------------------------- 
jeff | 1000   | 1     | 2018  
jeff | 1100   | 2     | 2018

应该是:

name | number | month | year 
---------------------------- 
jeff | 100    | 1     | 2018  
jeff | 110    | 2     | 2018

当前显示的数字是订单行数,但我希望它是订单数。

尝试以下操作: 您需要在分组依据中使用 users.name,正如您的问题所说,它也应该在您的 Order by 子句中,另一件事是你想知道每个用户的订单计数,所以它应该是计数不同的 orderid

SELECT users.name, COUNT(distinct orders.orderid), MONTH(orders.date), YEAR(orders.date)
FROM orders
INNER JOIN orderlines ON orders.orderid = orderlines.orderid
INNER JOIN users ON order lines.userid = users.userid
GROUP BY users.name, YEAR(order.date), MONTH(order.date)
ORDER BY users.name

最新更新