Mysql 选择按用户花费的金额计算的用户总数

Mysql 选择按用户花费的金额计算的用户总数,mysql,sum,Mysql,Sum,因此,我有一个表orders,其结构如下: id | user_id | order_amount | time_started | status 我试图让自给定时间戳以来花费最多的用户(包括用户表)访问他们的信息 选择SUM(不同的'orders.order_amount')作为'amount_total'从'orders'左侧加入'users'ON'orders.user_id'='users.id'WHERE'orders.time_start'>=“1484396552”和'order

因此,我有一个表
orders
,其结构如下:

id | user_id | order_amount | time_started | status
我试图让自给定时间戳以来花费最多的用户(包括
用户
表)访问他们的信息

选择SUM(不同的'orders.order_amount')作为'amount_total'从'orders'左侧加入'users'ON'orders.user_id'='users.id'WHERE'orders.time_start'>=“1484396552”和'orders.status'=1按'amount_total'分组的订单。user_id'DESC

但是这个查询是无效的。我预期的结果是:


id | user | id | amount | total | user | data | u from | user | user | data(u from | u users | user | u data)u from(u users | 124

  • 单引号而不是反勾号
    `
  • 在分组之前按排序
  • 通过添加到组中的DESC
试试这个:

SELECT `orders`.`user_id`,SUM(`orders`.`order_amount`) AS `amount_total`, `users`.*
FROM `orders`
LEFT JOIN `users`
ON `orders`.`user_id`          = `users`.`id`
WHERE `orders`.`time_started` >= 1484396552
AND `orders`.`status`          = 1
GROUP BY `orders`.`user_id`
ORDER BY `amount_total` DESC;

这似乎是可行的,但它只需要一个用户,而不是全部需要一个用户?您的意思是什么?此查询不完全正确,在仅使用sql模式的服务器上会失败,\u FULL\u GROUP\u BY,因为GROUP BY被误用了。。。。。阅读@Raymond,它可以在MySQL中开箱即用。如果没有,您可以轻松地将其余列添加到group by子句。@GurV不在最新的Mysql版本上,在该版本中,启用了sql模式ONLY\u FULL\u group\u by。。。但如果是真的,您可以轻松地将其余部分添加到列中