MYSQL总和,内部选择返回最大日期

MYSQL总和,内部选择返回最大日期,mysql,sql,Mysql,Sql,我试图提出一个查询,该查询将采用下表(名为sales): 并将返回以下内容: user_id | order_total | num_orders | last_order | 1 | 450 | 3 | 2013-06-04 | 3 | 105 | 1 | 2014-10-27 | 2 | 100 | 1

我试图提出一个查询,该查询将采用下表(名为
sales
):

并将返回以下内容:

user_id  |  order_total   |   num_orders  |  last_order  |
    1    |      450       |     3         | 2013-06-04   |
    3    |      105       |     1         | 2014-10-27   |
    2    |      100       |     1         | 2015-02-01   |
到目前为止,我提出了以下SQL来获得结果:

SELECT 
DISTINCT a.user_id,
SUM(order_total) AS order_total,
COUNT(*) AS num_orders,
b.order_date as last_order
FROM 
    `sales` AS a,
     (
        SELECT 
        order_date, 
        user_id
        FROM `sales` 
        ORDER BY order_date DESC
      ) AS b
WHERE a.user_id = b.user_id
GROUP BY user_id
ORDER BY order_total DESC
然而,问题是它返回:

user_id  |  order_total   |   num_orders  |  last_order  |
    1    |      1350      |     9         | 2013-06-04   |
    3    |      105       |     1         | 2014-10-27   |
    2    |      100       |     1         | 2015-02-01   |

是否有某种方法可以防止子查询影响Sum和Count的结果?还是我的做法不对?

为什么要使用子选择

SELECT user_id, 
SUM(order_total) AS order_total, 
MAX(order_date) AS lastOrder, 
COUNT(*) AS num_orders 
FROM table 
GROUP BY user_id
ORDER BY order_total DESC

为什么要使用subselect

SELECT user_id, 
SUM(order_total) AS order_total, 
MAX(order_date) AS lastOrder, 
COUNT(*) AS num_orders 
FROM table 
GROUP BY user_id
ORDER BY order_total DESC

请尝试指定您分组的用户id-a.user\U id或b.user\U id 1的上一个订单日期是2013-06-04?或2015-01-08?@GiorgiNakeuri抱歉,我的错误-我已更正了示例数据。请尝试指定您分组的用户id-1的a.user\U id或b.user\U idLast order date为2013-06-04?或者2015-01-08?@GiorgiNakeuri抱歉,我的错误-我已经更正了示例数据。按订单进行。我真的用它做了一顿饭。。。谢谢,伙计。一份一份的来。我真的用它做了一顿饭。。。谢谢你,伙计。