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

5kgi1eie  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(308)

我有3张table(简体):
订单(订单ID,日期)
订单行(lineid、orderid、userid)
用户(userid,name)
我想每个用户的订单数量按年度和按用户名每月订单分组列表。订单行具有用户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

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

nom7f22z

nom7f22z1#

试试下面的方法:你需要在groupby中使用users.name,而且它应该在order by子句中,正如你的问题所说的那样,另一件事是因为你想知道每个用户的订单数,所以它应该是count distinct 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

相关问题